Iterating through a nested JSON Array in C# with Newtonsoft

前端 未结 1 1567
没有蜡笔的小新
没有蜡笔的小新 2021-02-08 03:51

I have a block of JSON as follows:

[
  {
    \"id\": 1,
    \"name\": \"Section1\",
    \"project_id\": 100,
    \"configs\": [
      {
        \"id\": 1000,
          


        
1条回答
  •  南笙
    南笙 (楼主)
    2021-02-08 04:19

    A JObject is an object (analogous to a class):

    {
        "a": 1,
        "b": true
    }
    

    A JArray is a JSON array, and contains multiple JObject entities:

    [
        {
            "a": 1,
            "b": true
        },
        {
            "a": 2,
            "b": true
        }
    ]
    

    The root of a JSON document can be an object, or an array. In your case, it's an array.

    The following code and fiddle reveals that your code is fine, provided that you deserialize the document as what it is - an array.

    string json = "[{\"id\":1,\"name\":\"Section1\",\"project_id\":100,\"configs\":[{\"id\":1000,\"name\":\"myItem1\",\"group_id\":1}]},{\"id\":2,\"name\":\"Section2\",\"project_id\":100,\"configs\":[{\"id\":1001,\"name\":\"myItem2\",\"group_id\":2},{\"id\":1002,\"name\":\"myItem3\",\"group_id\":2},{\"id\":1003,\"name\":\"myItem4\",\"group_id\":2}]},{\"id\":3,\"name\":\"Section3\",\"project_id\":100,\"configs\":[{\"id\":1004,\"name\":\"myItem5\",\"group_id\":5},]}]";
    JArray obj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);
    foreach (var result in obj)
    {
        foreach (JObject config in result["configs"])
        {
            string id = (string)config["id"];
            string name = (string)config["name"];
            string gid = (string)config["group_id"];
    
            Console.WriteLine(name + " - " + id + " - " + gid);
        }
    }
    

    0 讨论(0)
提交回复
热议问题