【发布时间】:2018-07-18 12:19:35
【问题描述】:
我被一个返回以下 JSON 的糟糕 API 卡住了:
{
"root":[
{
"row":[
{
"name":"Foo",
"value":"Some value"
},
{
"name":"Bar",
"value":"Some other value"
}, (...)
]
},
{
"row":[
{
"name":"Foo",
"value":"Lorem"
},
{
"name":"Bar",
"value":"Ipsum"
}, (...)
]
}, (...)
]
}
我想使用 Newtonsoft.Json 将其反序列化为 C# 对象列表,以便名称与对象属性匹配,值将是属性值。该类将如下所示:
class Row
{
public string Foo { get; set; }
public string Bar { get; set; }
(...)
}
有什么想法吗?
【问题讨论】:
-
您可以先将其反序列化为字典,然后再解析。
-
作为一个快速修复,您可以反序列化为
dynamic,然后编写一些代码来处理它,找到row的每个实例,从中获取每个数组项,将数据复制到一个实例中您的 Row 课程并将其添加到您的最终列表中。我真的不知道如何仅在单个反序列化操作中直接获得List<Row>- 反序列化是将数据映射到直接匹配的对象结构的过程。因此,如果结构不是您想要的,那么您总是需要编写一些代码来将反序列化的数据转换为您真正想要的结构。 -
使用自定义
JsonConverter