从JSON.net中的JArray中获取值

本文关键字:获取 JArray 中的 JSON net | 更新日期: 2023-09-27 18:05:13

我有麻烦从我的JArray获取数据,特别是我试图访问ID值。下面是一个JSON示例

{
"page": 1,
"totalPages": 5,
"pageSize": 2,
"sortField": "label",
"sortOrder": "asc",
"content": [
  {
  "organizationId": "Org123",
  "id": "333",
  "label": "comp1"
  },
  {
  "organizationId": "Org123",
  "id": "444",
  "label": "comp2"
  }
]
}

下面是c#

        JArray jArray = new JArray(jsonString);
        foreach (JValue item in jArray)
        {
            Console.WriteLine(item["id"]);
        } 

我知道我需要检查JValue以确保它是ID类型,但我对对象类型分配感到困惑,一旦它在JArray中被分解。

从JSON.net中的JArray中获取值

首先,您正在处理顶层的对象。解析对象之后,您需要查看content数组:

var obj = JObject.Parse(json);
    
foreach (JObject element in obj["content"])
{
    Console.WriteLine(element["id"]);
}

这里有一个例子: https://dotnetfiddle.net/DhVZFf

而且(这可能只是一个打字错误),您的JSON格式不正确。具体来说,content数组中逗号分隔元素的位置错误:

{
    "organizationId": "Org123",
    "id": "333",
    "label": "comp1", // <---
}
{
  "organizationId": "Org123",
  "id": "444",
  "label": "comp2",
}

这些逗号应该在数组元素之间:

{
    "organizationId": "Org123",
    "id": "333",
    "label": "comp1"
}, // <---
{
  "organizationId": "Org123",
  "id": "444",
  "label": "comp2"
}

下面是其他有用的例子https://www.newtonsoft.com/json/help/html/queryinglinqtojson.htm