簡體   English   中英

使用Newtonsoft dll將嵌套(n級)json反序列化為C#對象

[英]Deserialize nested(n-level) json to C# objects using Newtonsoft dll

我正在使用一個API,它給了我一個多級JSON,我想將它轉換為C#對象。 任何幫助將不勝感激。

JSON

{
  "Categories": [
    {
      "Code": "2984",
      "Name": "Baby",
      "Children": [
        {
          "Code": "100978",
          "Name": "Christening & Gifts",
          "Children": [
            {
              "Code": "100980",
              "Name": "Baby Jewellery"
            },
            {
              "Code": "100981",
              "Name": "Ornaments"
            },
            {
              "Code": "121628",
              "Name": "Gift Baskets"
            },
            {
              "Code": "139760",
              "Name": "Christening",
              "Children": [
                {
                  "Code": "100979",
                  "Name": "Gifts"
                },
                {
                  "Code": "139764",
                  "Name": "Silverware"
                },
                {
                  "Code": "139765",
                  "Name": "Other Christening"
                }
              ]
            },
            {
              "Code": "32871",
              "Name": "Other Gifts"
            }
          ]
        },
        {
          "Code": "100982",
          "Name": "Baby Carriers/Backpacks"
        },
        {
          "Code": "1261",
          "Name": "Other Baby"
        },
        {
          "Code": "134282",
          "Name": "Walkers"
        }
    }]
}

首先,Json字符串無效。 它缺少第一類兒童的陣列終止字符。 字符串應該像這樣結束:

        }]
    }]
}

修復此錯誤后,您可以使用與字符串結構匹配的任何類,例如:

class MyRoot
{
    public Node[] Categories {get;set;}
}

class Node
{
    public string Code{get;set;}
    public string Name {get;set;}
    public Node[] Children{get;set;}
}

var myRoot=JsonConvert.DeserializeObject<MyRoot>(someString);
Console.WriteLine(myroot.Categories[0].Children[3].Name);

------
Walkers

暫無
暫無

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

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