C# 使用JSON.net获取JToken的名称/密钥

C# 使用JSON.net获取JToken的名称/密钥,c#,json,json.net,C#,Json,Json.net,我有一些JSON看起来像这样 [ { "MobileSiteContent": { "Culture": "en_au", "Key": [ "NameOfKey1" ] } }, { "PageContent": { "Culture": "en_au", "Page": [ "about-us/" ] } } ] 我将其解析为JArray:

我有一些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
JObject
JArray
JProperty
JValue
等的基类。您可以使用
Children()
方法获取JToken的特定类型的子项的筛选列表,例如
JObject
。每个
JObject
都有一组
JProperty
对象,可以通过
Properties()
方法访问这些对象。对于每个
JProperty
,您可以获取其
名称。(当然,如果需要,您也可以获得
,这是另一个
JToken

综上所述,我们有:

JArray array = JArray.Parse(json);

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

JObject的默认迭代器是一个在键/值对上迭代的字典

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

最简单的方法是查看JSON对象中每个项的路径

For Each token As JToken In json
        Dim key= token.Path.Split(".").Last
Next
JObject obj = JObject.Parse(json);
var attributes = obj["parent"]["child"]...["your desired element"]; 

foreach (JProperty attributeProperty in attributes)
{
    var attribute = attributes[attributeProperty.Name];
    var my_data = attribute["your desired element"];
}
For Each token As JToken In json
        Dim key= token.Path.Split(".").Last
Next