c# - 如何解析包含对象列表的匿名对象列表的 JSON 字符串?
问题描述
我一直在尝试使用 Newtonsoft 的 Json 库将以下 JSON 字符串反序列化为模型,但没有这样做。json字符串如下:-
[
[
{
"events": [
{
"d": "Dec 2019 Final",
"e": "Released 5 Mar 2020"
}
]
}
],
[
{
"events": [
{
"d": "Some String",
"e": "Some Other string"
}
]
}
]
]
我尝试通过使用 Visual Studio 内部工具将 json 转换为 C#(特殊粘贴)创建其模型。还尝试使用 QuickTypes.io 创建模型,但到目前为止没有任何效果。
我能做的最好的就是解析 api 响应List<List<object>>
,然后通过迭代其键和值来手动获取值,这是我完全想避免的。有没有更好的方法来处理这些数据?
解决方案
我希望我能正确理解你的问题。如果你想坚持匿名类型,你可以利用JsonConvert.DeserializeAnonymousType
这个目的。
var innerAnonymousType = new {d=string.Empty,e=string.Empty};
var innerAnnonymousTypeList = CreateList(innerAnonymousType);
var outerAnonymousType = CreateList(new {events = innerAnnonymousTypeList});
var result = JsonConvert.DeserializeAnonymousType(json, CreateList(outerAnonymousType));
其中 CreateList 定义为
public static List<T> CreateList<T>(params T[] elements)
{
return new List<T>(elements);
}
使用 JsonConvert.DeserializeAnonymousType
输出样本
推荐阅读
- php - Laravel 分页多态关系,topic->comments()
- informatica-powercenter - 如何多次执行 DB2 存储过程来更新多条记录
- javascript - 你能解释一下 TypeScript 3.7 的可选链吗?
- php - 优化 mysql 查询以减少搜索的行数
- excel - 使用VBA替换字符串中特定位置的文本
- javascript - Javascript中的密封对象和检查对象的类型
- javascript - 使用 oath 时 Amplify.Hub 登录处理程序中的竞争条件
- java - 如何使用 Hibernate 在实体内部映射实体集合?
- python - 在 Python 中控制小数而不是有效数字
- node.js - 如何拥有安全的 MongoDB - Mongoose 设置?