首页 > 解决方案 > 如何解析包含对象列表的匿名对象列表的 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>>,然后通过迭代其键和值来手动获取值,这是我完全想避免的。有没有更好的方法来处理这些数据?

标签: c#asp.net-corexamarinjson.net

解决方案


我希望我能正确理解你的问题。如果你想坚持匿名类型,你可以利用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

输出样本

在此处输入图像描述


推荐阅读