[英]Getting the name / key of a JToken with JSON.net
我有一些 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<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 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"];
}
JObject 的默认迭代器是一个迭代键/值对的字典。
JObject obj = JObject.Parse(response);
foreach (var pair in obj) {
Console.WriteLine (pair.Key);
}
使用 Linq 我们可以这样写:
JArray array = JArray.Parse(json);
foreach (JObject content in array.Children<JObject>())
{
List<string> keys = content.Properties().Select(p => p.Name).ToList();
}
如果JToken
密钥名称未知,并且您只需要密钥的值而不考虑名称,只需使用JToken.Values()
方法即可。
下面的示例假定JToken
值是原始类型 - 提取找到的第一个值。
可以扩展解决方案以支持数组值。
JToken fooToken = sourceData.
int someNum = fooToken .Values<int?>().First() ?? 0;
int someString = fooToken .Values<string>().First();
最简单的方法是查看每个项目在 JSON 对象中的路径。
For Each token As JToken In json
Dim key= token.Path.Split(".").Last
Next
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.