Как принять JSON с несколькими слоями - PullRequest
0 голосов
/ 05 июля 2019

Я получил этот JSON, который я пытаюсь принять с моделью, но, похоже, не могу понять, как я приму двухслойный JSON.

Я просто продолжаю получать недействительные данные, так как должна выглядеть моя модель?

JSON

{
    "MAC": "04916206f005",
    "DateTime": "2015-01-01 23:59:50",
    "Data": [{
        "Flow": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    }]
}

Модель

{
    public class FlowDTO
    {

        [Required]
        public string MacAdr { get; set; }
        public DateTime DateTime { get; set; }
        public Array[] Data { get; set; }

    }

Контроллер

[HttpPost]
        public async Task<IActionResult> FlowMessageFromGateway([FromBody] FlowDTO flowDTO)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            return Ok(flowDTO);
        }
    }

ОШИБКА я получаю

{
  "Data[0].Flow": [
    "The input was not valid."
  ]
}

1 Ответ

1 голос
/ 05 июля 2019

Проблема заключается в том, как вы отправляете данные.

Поскольку вы даете ему имя «Поток», при десериализации ожидается, что у данных будет свойство под названием Поток.

Вычтобы это работало, отправив через почтальон следующее:

{
    "MAC": "04916206f005",
    "DateTime": "2015-01-01 23:59:50",
    "Data": [0,0,0,0,0,0,0,0,0]
}

Редактировать

Если вы хотите, чтобы эти данные работали:

{
    "MAC": "04916206f005",
    "DateTime": "2015-01-01 23:59:50",
    "Data": [{
        "Flow": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    }]
}

Тогда вам нужно будет сделать следующее:

1) Объект, содержащий поток

public class Data
{
    public List<int> Flow {get; set;}
}

2) Обновить исходную модель, чтобы использовать класс данных

public class FlowDTO
{

    [Required]
    public string MacAdr { get; set; }
    public DateTime DateTime { get; set; }
    public List<Data> Data { get; set; }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...