Я пытаюсь выполнить запрос POST с объектом JSON в качестве тела. Объект JSON содержит вложенные типы, которые являются предопределенными моделями в библиотеке, которую я использую, но когда я использую атрибут [FromBody], связывается только корневая модель, а вложенные модели равны нулю.
Я пробовал без использования атрибута [FromBody], но он также связывает только модель корневого уровня.
Пример объекта POST:
Foo будет моделью, которая принимает объект 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, когда я прохожу, но их свойства (система и значение) оба равны нулю. Я проверил орфографию и регистр, но проблем там нет.