在Windows Phone应用程序中,我需要解析JSON数据。我能够获得没有嵌套的键的值。但是如果JSON在数组中有数组,那么如何从JSON文件中提取值?
过去我所做的是将JSON解析为JArray对象,然后从JToken获取指定字符串键的值。
在下面的JSON中,people
有men
和women
,而men
本身有很多不同身份的人。因此,如果我将这个完整的东西作为JSON字符串,我如何打印特定人的ID的值?如果这里没有嵌套数组,我可以转换成JArray并访问索引值,但现在该怎么做?
这是我的JSON:
{
"people": [
{
"men": [
{
"id": 0,
"name": "alex",
"age": 25
},
{
"id": 1,
"name": "bob",
"age": 26
},
{
"id": 2,
"name": "charlie",
"age": 27
}
]
},
{
"women": [
{
"id": 0,
"name": "alexys",
"age": 25
},
{
"id": 1,
"name": "bethany",
"age": 26
},
{
"id": 2,
"name": "catherine",
"age": 27
}
]
}
]
}
答案 0 :(得分:10)
在顶级JToken
,您可以使用SelectToken()
导航至包含您感兴趣的数据的JArray
:
JToken token = JToken.Parse(json);
JArray men = (JArray)token.SelectToken("people[0].men");
从那里你可以像往常一样处理JArray
:
foreach (JToken m in men)
{
Console.WriteLine("id: " + m["id"]);
Console.WriteLine("name: " + m["name"]);
Console.WriteLine("age: " + m["age"]);
Console.WriteLine();
}
除了SelectToken()
路径为people[1].women
之外,女性数组也是如此。
答案 1 :(得分:2)
使用http://json2csharp.com/ 它生成类。我无法复制它,因为你把它放在这里作为图片,而不是文本。 对于数组,您必须创建其他类。在您的情况下,您将拥有一个包含Men []和Women []数组的People类。 Men and Women类包含另一个数组,其中包含Id,Name,Age。 我开发了一个类似的应用程序,我使用了Newtonsoft Json。它也适用于数组。
答案 2 :(得分:1)
使用Json.net
您可以通过nuget添加它。 这是nested json parsing
的一个很好的指南