我有以下JSON代码,
{
"dataContainer":{
"sheets":{
"1":{
"0":{
"1":{
"type":6,
"value":2,
"value2":"11-15-1991"
},
"2":{
"type":10,
"value":3,
"value2":3
}
},
"1":{
"1":{
"type":6,
"value":7,
"value2":"11-16-1991"
},
"2":{
"type":10,
"value":8,
"value2":8
}
}
},
"2":{
"0":{
"1":{
"type":6,
"value":2,
"value2":"11-15-1991"
},
"2":{
"type":10,
"value":3,
"value2":3
}
},
"1":{
"1":{
"type":6,
"value":7,
"value2":"11-16-1991"
},
"2":{
"type":10,
"value":8,
"value2":8
}
}
}
}}
}
我需要反序列化该代码,我已经尝试过那个,
Dictionary<string,object> dict = ser.Deserialize<Dictionary<string, object>>(obj);
List<object> sheetObject = new List<object>();
sheetObject = ((Dictionary<string, object>)dict["dataContainer"]).Values.ToList();
public object sheets = new object();
sheets = sheetObject[0];
但这不起作用我希望能够像下面那样工作,
sheets[1][0][1].type
如何实现这个目标?
答案 0 :(得分:0)
Json.NET是要使用的库。该库有一个函数,它将获取一个JSON字符串并返回一个表示JSON的“动态”变量。 语法是这样的:
dynamic dict = JsonConvert.DeserializeObject(YOUR_JSON_STRING);
您现在可以动态访问整个JSON树,例如:
dynamic sheetObject = dict.dataContainer.sheets;
要在任何给定级别迭代孩子,只需使用foreach:
foreach (dynamic child in sheetObject.Children()) { /* do something */ }