我正在尝试使用 JSON 对象作为主体进行 POST 请求。JSON 对象包含嵌套类型,这些嵌套类型是我正在使用的库中的预定义模型,但是当我使用 [FromBody] 属性时,只有根模型被绑定,而嵌套模型为空。
我试过不使用 [FromBody] 属性,但它也只绑定根级模型。
POST 对象示例:Foo 将是一个采用 Bar 对象的模型。Bar 将是一个具有属性 name 和 firstLetter 的模型。
{
"foo": [
{
"bar": {
"name": "bar",
"firstLetter": "b"
}
},
{
"bar": {
"name": "bar1",
"firstLetter": "b"
}
}
]
}
控制器路由如下所示:
[HttpPost("example-route")]
public async Task<ActionResult<string>> Static([FromBody]Request request){
//Some Action
}
Request 类看起来像:
//Request class
public class Request{
[JsonConstructor]
public Request(Bar b){
this.Bar = b;
}
public List<Bar> Bar = { get; set; }
}
//Bar class
public class Bar {
public Bar(string name, string firstLetter){
this.Name = name;
this.FirstLetter = firstLetter;
}
public string Name { get; set; }
public string FirstLetter { get; set; }
}
当我调用它时,Bar 将被分配,但它的 Name 和 FirstLetter 属性仍将为空。
编辑:我将在示例中添加列表,但我可能过于简化了。实际请求看起来更像:
{
"prop1": "field1",
"prop2": "4",
"prop3": {
"userId": "2",
"customerId": "4",
"type": {
"userType": "Manager",
"contactInfo": [
{
"system": "email",
"value": "test@test.com"
},
{
"system": "phone",
"value": "555-555-5555"
}
]
}
}
}
其中 prop1、prop2、prop3、type 和 contactInfo 都是我正在使用的库中定义的模型。我正在尝试获取 ContactInfo 对象,到目前为止,当我逐步执行时,它可以将两个对象分配给 ContactInfo,但它们的属性(系统和值)都是空的。我检查了拼写和大小写,但没有问题。