JObject JSON 解析嵌套对象

时间:2021-07-30 23:00:00

标签: c# json

我正在尝试将 JSON 解析为格式如下的数组:

{
    "company": [
        [
            {
                "id": 1,
                "name": "Test Company1"
            },
           {
                "id": 2,
                "name": "Test Company2"
            }
        ]
    ]
}

我正在使用 Newtonsoft JObjects 来执行此操作。到目前为止,我有以下代码,它使我进入“公司”对象:

JObject joResponse = JObject.Parse(json);
JArray arr = (JArray)joResponse["company"];

但是数组中只有一个值,它是一个包含所有 JSON 节点的值:

    [
        {
            "id": 1,
            "name": "Test Company1"
        },
       {
            "id": 2,
            "name": "Test Company2"
        }
    ]

所以基本上我需要进入第二层,但是“公司”内部的第二层没有命名,所以我不知道如何访问它。

2 个答案:

答案 0 :(得分:2)

你可以这样使用:

JToken arr = joResponse["company"]?.Children().First()[1];

或者:

JToken arr = joResponse["company"]?[0]?[1];

答案 1 :(得分:0)

最简单的方法是创建类来保存每个对象类型。 由于某种原因,company 实际上是一个数组数组,因此变得更加复杂.

class Root
{
    public List<List<Company>> companies { get; set; }
}

class Company
{
    public int id { get; set; }
    public string name { get; set; }
}

然后你只需反序列化到根对象

var result = JsonConvert.DeserializeObject<Root>(json);

var companies = result.companies.SelectMany(c => c).ToList();