我需要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;}
}
使用dynamic
类型,json部件被放在对象内的对象中。
这意味着如果我发送此有效负载:
{
"id":1,
"dynamicData": {"x":1}
}
dynamicData
将得到{{"x":1}}
声明dynamicData
一个字符串并在控制器方法中解析它应该是可行的,但应该有一个干净的方法来完成这一点,我不知道它。类型不必是dynamic
类型。
为了完整起见,这里的控制器:
[ApiController]
[Route("[controller]")]
public class SomeController : ControllerBase
{
[HttpPost]
public void submit(SomePayload payload)
{
}
}
和program.cs文件将NewtonsoftJson
设置为api序列化程序(.net core版本6之前的版本使用startup类):
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers()
.AddNewtonsoftJson();
1条答案
按热度按时间xzlaal3s1#
我是通过使用类型对象声明属性并将其反序列化为与动态数据格式匹配的模型来实现的。
动态模型
反序列化动态数据的模型
请求正文
反序列化
这对你有用吗?