簡體   English   中英

如何解析包含對象列表的匿名 object 列表的 JSON 字符串?

[英]How to parse JSON string for List of List of anonymous object which contains List of objects?

我一直在嘗試使用 Newtonsoft 的 Json 庫將以下 JSON 字符串反序列化為 model ,但沒有這樣做。 json 字符串如下:-

[
    [
        {
            "events": [
                {
                    "d": "Dec 2019 Final",
                    "e": "Released 5 Mar 2020"
                }
            ]
        }
    ],
    [
        {
            "events": [
                {
                    "d": "Some String",
                    "e": "Some Other string"
                }
            ]
        }
    ]
]

我嘗試通過使用 Visual Studio 內部工具 json 到 C#(特殊粘貼)創建其 model 來做到這一點。 還嘗試使用 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

Output樣品

在此處輸入圖像描述

您可以使用基礎 model 並解析您的 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 到 model 使用這個:

var model = JsonConvert.DeserializeObject<List<List<BaseClass>>>("your json");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM