【问题标题】:Getting values out of a JArray in JSON.net从 JSON.net 中的 JArray 中获取值
【发布时间】:2021-11-12 23:06:09
【问题描述】:

我无法从我的 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 中分解后分配的对象类型感到困惑。

【问题讨论】:

标签: c# json.net


【解决方案1】:

首先,您要在顶层处理一个对象。解析完对象后,需要查看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

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多