如何解析嵌套的JSON数据结构

Sha*_*ani 4 c# json json.net windows-phone-8.1

在Windows Phone应用程序中,我需要解析JSON数据.我能够获得未嵌套的键的值.但是如果JSON在数组中有数组,那么如何从JSON文件中提取值呢?

在过去,我所做的是将JSON解析为JArray对象,然后从JToken获得指定字符串键的值.

在下面的JSON中,peoplemenwomen,并且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
                }
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Bri*_*ers 10

从顶层JToken,您可以使用SelectToken()导航到JArray包含您感兴趣的数据:

JToken token = JToken.Parse(json);
JArray men = (JArray)token.SelectToken("people[0].men");
Run Code Online (Sandbox Code Playgroud)

从那里你可以JArray像往常一样处理:

foreach (JToken m in men)
{
    Console.WriteLine("id: " + m["id"]);
    Console.WriteLine("name: " + m["name"]);
    Console.WriteLine("age: " + m["age"]);
    Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud)

女性阵列也是如此,除了SelectToken()路径people[1].women.

演示: https ://dotnetfiddle.net/7BoiUO