在Windows Phone应用程序中,我需要解析JSON数据。我能够获取未嵌套的键的值。但是,如果 JSON 在数组中具有数组,那么如何从 JSON 文件中提取值?
过去,我所做的是将JSON解析为JArray对象,然后从JToken中获取指定字符串键的值。
在下面的JSON中,people
有men
和women
,men
本身有很多不同ID的人。 因此,如果我将这个完整的东西作为 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
}
]
}
]
}
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
。
演示:https://dotnetfiddle.net/7BoiUO
使用 http://json2csharp.com/它生成类。我无法复制它,因为您在这里作为图片而不是文字。对于数组,您必须创建其他类。在您的情况下,您将有一个包含 Men[] 和 Women[] 数组的 People 类。Men 和 Women 类包含另一个数组,其中包含 Id、Name、Age。我开发了一个类似的应用程序,我使用Newtonsoft Json。它也可以与数组完美配合。
> 使用 Json.net
可以通过 nuget 添加它。这是嵌套 json 解析的好指南