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

本文关键字:JSON 数据结构 嵌套 何解析 | 更新日期: 2023-09-27 18:30:52

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

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

在下面的JSON中,peoplemenwomenmen本身有很多不同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
                }
            ]
        }
    ]
}

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

在顶级

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 解析的好指南