Car*_*los 2 c# asp.net json javascriptserializer json-deserialization
我有一个带有嵌套对象的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
},
...
Run Code Online (Sandbox Code Playgroud)
我想使用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; }
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是"不支持类型'菜单'反序列化矩阵".我将非常感谢有关如何声明自定义对象的任何帮助.
干杯.
您的根对象是一个2d 锯齿状的对象数组.属性"children"也是2d锯齿状数组.因此,您的Menu课程需要:
public class Menu
{
public int id { get; set; }
public string name { get; set; }
public Menu [][] children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并按如下方式反序列化您的JSON:
var serializer = new JavaScriptSerializer();
var objects = serializer.Deserialize<Menu [][]>(jsonData);
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢列表到数组,请执行:
public class Menu
{
public int id { get; set; }
public string name { get; set; }
public List<List<Menu>> children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后
var objects = serializer.Deserialize<List<List<Menu>>>(jsonData);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |