如何使用JSON.net获取JToken的名称/密钥?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

我有一些看起来像这样的JSON

[
  {
    "MobileSiteContent": {
      "Culture": "en_au",
      "Key": [
        "NameOfKey1"
      ]
    }
  },
  {
    "PageContent": {
      "Culture": "en_au",
      "Page": [
        "about-us/"
      ]
    }
  }
]

我把它解释为JArray:

var array = JArray.Parse(json);

然后,我遍历数组:

foreach (var content in array)
{

}

content 是一个 JToken

我如何检索每个项目的“名称”或“键”?

例如,“MobileSiteContent”或“PageContent”

提问于
用户回答回答于

JToken是基类JObjectJArrayJPropertyJValue,等你可以使用Children<T>()的方法来获得JToken的孩子是某种类型的过滤列表,例如JObject。每个对象JObject都有一个JProperty对象集合,可以通过该Properties()方法访问它们。对于每一个JProperty,你可以得到它的Name。(当然,Value如果需要,你也可以得到,这是另一个JToken。)

把它放在一起,我们有:

JArray array = JArray.Parse(json);

foreach (JObject content in array.Children<JObject>())
{
    foreach (JProperty prop in content.Properties())
    {
        Console.WriteLine(prop.Name);
    }
}

输出:

MobileSiteContent
PageContent
用户回答回答于

JObject的默认迭代器是作为遍历键/值对的字典。

JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
    Console.WriteLine (pair.Key);
}

扫码关注云+社区