c# - 如何从json字符串c#Newtonsoft.json中获取对象列表
问题描述
我正在尝试将 JSON 字符串转换为对象列表,但出现错误
无法将当前 JSON 对象反序列化为 List 类型,因为该类型需要 JSON 数组才能正确反序列化。
我检索json,它看起来像这样
{
"Code":0,
"Message":"OK",
"Data":
{
"Houses":
[
{
"Id":1,
"Name":"House 1",
"Area":"22.00",
"ShortName":"H1",
"FarmName":"Farm 1"
},
{
"Id":2,
"Name":"Farmi1 - House 1",
"Area":"1000.00",
"ShortName":"H1",
"FarmName":"Farm 1"
}
]
}
}
然后我说
List<House> Houses = JsonConvert.DeserializeObject<List<House>>(json);
解决方案
你得到的 JSON 字符串不是一个列表,而是一个在嵌套级别上有一个列表的对象。您必须反序列化最外层的结构,然后获取相应的嵌套属性。
您可以定义一个代表数据完整结构的整个类,或者,如果您只对房屋列表感兴趣,只需使用 JObjects
var o = JsonConvert.DeserializeObject<JObject>(json);
var h = o.Value<JObject>("Data")
.Value<JArray>("Houses")
.ToObject<List<Houses>>();
推荐阅读
- c# - C#如何处理从android上传到C#的多部分文件
- docker - 具有 Swarm 模式和无 swarm 的多主机 Docker 网络
- android - 本地 python 服务器 + xampp + android 连接
- sql - 从联合中获取每个 ID 的单个记录
- javascript - vue.js 中的多个条件
- matlab - 在MATLAB中计算磁场中粒子的磁矩
- regex - 需要帮助为带有查询字符串的 URL 创建正则表达式重定向
- html - HTML/CSS - 对齐文本,出现滚动条
- validation - redux 表单 - 验证输入匹配特定长度
- swift - 如何从日期中获取秒数 - Swift 4