【发布时间】:2022-01-12 15:53:31
【问题描述】:
我需要json 架构的一部分是可变的。如何声明将绑定到 json 的动态部分的字段?
我正在使用 net core 6.0 和 Newtonsoft 序列化器。
例子:
{
id:1,
...
dynamicData: //from here the json can be any valid json structure. the type is unknow.
}
有效载荷类是:
public class SomePayload {
public int id {get;set;}
public dynamic dynamicData {get;set;}
}
使用dymanic 类型,json 部分被放入对象内部的对象中。
这意味着如果我发送这个有效载荷:
{
"id":1,
"dynamicData": {"x":1}
}
dynamicData 将得到 {{"x":1}}
声明dynamicData 一个字符串并在控制器方法中解析它应该可以工作,但是
应该有一种我不知道的干净方法来做到这一点。
类型不必是 dynamic 类型。
为了完整起见,这里是控制器:
[ApiController]
[Route("[controller]")]
public class SomeController : ControllerBase
{
[HttpPost]
public void submit(SomePayload payload)
{
}
}
以及将NewtonsoftJson设置为api序列化器的program.cs文件(.net core 6之前的版本使用启动类):
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers()
.AddNewtonsoftJson();
【问题讨论】:
-
是否要动态更改值数据类型?
-
不,因为我不知道项目时的类型。我需要能够在任何有效的 struct json 对象中接收扩展数据
标签: web-services .net-core asp.net-web-api json.net asp.net-core-webapi