如何解析包含对象列表的匿名对象列表的 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");