我尝试使用模型接受此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."
]
}
答案 0 :(得分:1)
问题在于您如何发送数据。
由于您将其命名为“ Flow”,因此在反序列化时,它期望Data具有名为Flow的属性。
您应该可以通过邮递员发送以下内容来使其工作:
{
"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; }
}