如何解析包含字符串数组的JSON数组

5
假设我从无法更改的 Web 服务获取以下 JSON 数据。
[
    [
        "Header1",
        "Header2",
        "Header3",
        "Header4"
    ],
    [
        "FirstValue1",
        "FirstValue2",
        "FirstValue3",
        "FirstValue4"
    ],
    [
        "SecondValue1",
        "SecondValue2",
        "SecondValue3",
        "SecondValue4"
    ]
]

jsonlint.com 告诉我这是有效的json格式,根据我的了解,我同意这一点。

但是,我想知道是否有“简单”的方法将其反序列化为一个类。第二个和第三个数组中的每个值都属于第一个数组中相应标题的值。

我知道如何使用Json.NET,但无法理解如何在此数据结构中使用它。


你可以对数据进行反序列化,然后按照自己的需求重新组织。 - xanatos
3个回答

14

简单 - 你可以使用 JsonConvert.DeserializeObject 将其反序列化为一个 string[][]:

using System;
using System.IO;
using Newtonsoft.Json;

class Test
{
    static void Main()
    {
        var json = File.ReadAllText("test.json");
        string[][] array = JsonConvert.DeserializeObject<string[][]>(json);
        Console.WriteLine(array[1][3]); // FirstValue4
    }
}

4
最简单的方法是使用string类,并使用Json.NET进行反序列化。
string[][] values = JsonConvert.DeserializeObject<string[][]>(json);

-1

1
那行不通。JObject 不知道 CPUDrives。你需要用 dynamic 来处理。而且你的 JSON 和问题所问的完全不同。 - germi
这只是一个例子...如果你尝试运行代码...你会看到它的工作原理。 - Ted James
它不工作了 - 我得到了“JObject”不包含“CPU”的定义,也没有可访问的扩展方法“CPU”,接受类型为“JObject”的第一个参数 (你是否缺少一个使用指令或程序集引用?) - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接