gpt4 book ai didi

c# - 在 C# 中反序列化嵌套 JSON 数组

转载 作者:行者123 更新时间:2023-12-02 17:36:21 31 4
gpt4 key购买 nike

我有一个包含嵌套对象的 JSON 数组,代表一个菜单,如下所示:

[
[
{
"name": "Item 1",
"id": 1
},
{
"name": "Item 2",
"id": 2,
"children": [
[
{
"name": "Item 21",
"id": 21
}
]
]
},
{
"name": "Item 3",
"id": 3,
"children": [
[
{
"name": "Item 31",
"id": 31,
"children": [
[
{
"name": "Item 311",
"id": 311
},
{
"name": "Item 312",
"id": 312
}
]
]
},
{
"name": "Item 32",
"id": 32
},
...

我想使用 JavaScriptSerializer 对其进行反序列化。我有一些代码如下所示,但无法正常工作。

var serializer = new JavaScriptSerializer();
var objects = serializer.Deserialize<Menu>(jsonData);
...


public class Menu
{
public int id { get; set; }
public string name { get; set; }
public Menu[] children { get; set; }
}

我得到的错误是“不支持‘菜单’类型来反序列化矩阵”。对于如何声明自定义对象的任何帮助,我将不胜感激。

干杯。

最佳答案

你的根对象是一个 2d jagged array的物体。属性“children”也是二维锯齿状数组。因此,您的 Menu 类需要是:

public class Menu
{
public int id { get; set; }
public string name { get; set; }
public Menu [][] children { get; set; }
}

并按如下方式反序列化您的 JSON:

var serializer = new JavaScriptSerializer();
var objects = serializer.Deserialize<Menu [][]>(jsonData);

或者,如果您更喜欢列表而不是数组,请执行以下操作:

public class Menu
{
public int id { get; set; }
public string name { get; set; }
public List<List<Menu>> children { get; set; }
}

然后

var objects = serializer.Deserialize<List<List<Menu>>>(jsonData);

关于c# - 在 C# 中反序列化嵌套 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658590/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com