如何解析包含对象列表的匿名对象列表的 JSON 字符串?
How to parse JSON string for List of List of anonymous object which contains List of objects?
我一直在尝试使用 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>>
,然后通过迭代其键和值来手动获取值,这是我完全想避免的事情。
有没有更好的方法来处理这些数据?
希望我理解你的问题correctly.If你想坚持使用匿名类型,你可以使用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);
}
Using JsonConvert.DeserializeAnonymousType
输出样本
您可以使用基本模型并解析您的 json:
public class BaseClass
{
public List<EventModel> Events { get; set; }
}
public class EventModel
{
[JsonProperty(PropertyName = "d")]
public string Date { get; set; }
[JsonProperty(PropertyName = "e")]
public string Event { get; set; }
}
为了反序列化 json 模型使用这个:
var model = JsonConvert.DeserializeObject<List<List<BaseClass>>>("your 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>>
,然后通过迭代其键和值来手动获取值,这是我完全想避免的事情。
有没有更好的方法来处理这些数据?
希望我理解你的问题correctly.If你想坚持使用匿名类型,你可以使用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);
}
Using JsonConvert.DeserializeAnonymousType
输出样本
您可以使用基本模型并解析您的 json:
public class BaseClass
{
public List<EventModel> Events { get; set; }
}
public class EventModel
{
[JsonProperty(PropertyName = "d")]
public string Date { get; set; }
[JsonProperty(PropertyName = "e")]
public string Event { get; set; }
}
为了反序列化 json 模型使用这个:
var model = JsonConvert.DeserializeObject<List<List<BaseClass>>>("your json");