簡體   English   中英

嘗試使用內部數組將C#解析為Dictionary

[英]Trying C# parse Json into Dictionary with inner arrays

我是C#的新手請澄清如何解析這個JSON。 我需要迭代內部數組來提取一些數據。 JSON:

{
    "p": [{
        "p": [{
            "p": "Get in ",
            "f": [],
            "t": "t"
        },
        {
            "p": "test",
            "t": "lb",
            "id": "Make"
        },
        ....

例如,需要訪問字典“{”p“:”進入“,”f“:[],”t“:”t“}”執行以下操作:

Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(bodyString);
List<Dictionary<string, object>> itemsArray = result["p"] as List<Dictionary<string, object>>;

foreach(var itemInfo in itemsArray)
{

}

但itemsArray為null。

如果您創建一個模型以適合數據,那么您不必擔心多級字典反序列化的問題。

void Main()
{
    var json = @"{
   ""p"":[
      {
         ""p"":[
            {
               ""p"":""Get in "",
               ""f"":[

               ],
               ""t"":""t""
            },
            {
               ""p"":""test"",
               ""t"":""lb"",
               ""id"":""Make""
            }
         ]
      }
   ]
}";

    var data = JsonConvert.DeserializeObject<ItemCollection>(json);
}

public class ItemCollection
{
    public ItemGroup[] p { get; set; }
}

public class ItemGroup
{
    public Item[] p { get; set; }
}

public class Item
{
    public string p { get; set; }
    public string t { get; set; }
    public string id { get; set; }
    public string[] f { get; set; }
}

如果將反序列化為字符串到對象的字典,則對象將是JArray,Jobject或JToken。 {var result = JsonConvert.DeserializeObject>(json);

            Console.WriteLine((result["p"]).GetType().Name);
        }

將輸出'JArray'。

您可以使用JArray等,或者指定所需的完整結構:

        {
            var result = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string,List<Dictionary<string,object>>>>>>(json);

            Console.Write((result["p"]).GetType().Name);
            var itemsArray = result["p"];
            var item = result["p"][0]["p"][0];

            foreach(var entry in item)
                Console.WriteLine(entry.Key + " = " + entry.Value);
        }

暫無
暫無

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

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