我有一些看起来像这样的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”
答案 0 :(得分:103)
JToken
是JObject
,JArray
,JProperty
,JValue
等的基类。您可以使用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
答案 1 :(得分:15)
JObject的默认迭代器是一个迭代键/值对的字典。
JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
Console.WriteLine (pair.Key);
}
答案 2 :(得分:13)
JObject obj = JObject.Parse(json);
var attributes = obj["parent"]["child"]...["your desired element"].ToList<JToken>();
foreach (JToken attribute in attributes)
{
JProperty jProperty = attribute.ToObject<JProperty>();
string propertyName = jProperty.Name;
}
答案 3 :(得分:-1)
最简单的方法是查看JSON对象中每一项的路径。
For Each token As JToken In json
Dim key= token.Path.Split(".").Last
Next