首页 > 解决方案 > 循环遍历 JObject 嵌套数组

问题描述

我无法弄清楚如何通过这个 JObject 来检索运行下的 id 属性。

我有以下代码,它将成功地为我提供条目下的 id 属性,但是如何再次嵌套它以进入运行部分并获取这些 ID?

JSON:

{
  "id": 168,
  "name": "section 1",
  "entries": [
    {
      "id": "908-9876-908",
      "suite_id": 15,
      "name": "List 1",
      "runs": [
        {
          "id": 169,
          "suite_id": 15
        }
      ]
    },
    {
      "id": "998-4344-439",
      "suite_id": 16,
      "name": "List 2",
      "runs": [
        {
          "id": 170,
          "suite_id": 16
        }
      ]
    }
  ]
}

C#代码:

JObject obj = JsonConvert.DeserializeObject<JObject>(response);

foreach (JObject id in obj["entries"])
{
    string returnable = (string)id["id"];
    Console.WriteLine(returnable);
}

我曾尝试查看 ["entries"]["runs"] 但这也不起作用。

打印出来的是:

908-9876-908
998-4344-439

我想要的是

169
170

标签: c#jsonjson.net

解决方案


您可以使用以下代码实现它

var jsonObject = JObject.Parse(json);

foreach (var entry in jsonObject["entries"])
{
    foreach (var run in entry["runs"])
    {
        string returnable = (string)run["id"];
        Console.WriteLine(returnable);
    }               
}

你想看

169
170

它们是id来自runs数组的值,因此您应该在内部循环中枚举它们。之后你还漏掉了一个逗号"name": "section 1"


推荐阅读