【发布时间】:2014-09-23 13:08:26
【问题描述】:
目前这是我的 JSON 数组:
{"1": [{"11": [[1, 1],[2, 2],[3, 3]],"21": [[1, 1],[2, 2],[3, 3]],"31": [[1, 1],[2, 2],[3, 3]]}],"4": [{"12": [[1, 1],[2, 2],[3, 3]],"22": [[1, 1],[2, 2],[3, 3]],"32": [[1, 1],[2, 2],[3, 3]]}],"6": [{"13": [[1, 1],[2, 2],[3, 3]],"23": [[1, 1],[2, 2],[3, 3]],"33": [[1, 1],[2, 2],[3, 3]]}]}
我想把它转换成Dictionary<int, Dictionary<int, Dictionary<int, int>>>
我已经搜索了很长时间,但找不到可能的解决方案。到目前为止,我有:
Dictionary<int, Dictionary<int, Dictionary<int, int>>> menus = new Dictionary<int, Dictionary<int, Dictionary<int, int>>>();
JToken entireJson = JToken.Parse(rawDirectory);
foreach (var item in entireJson.Children())
{
var property = item as JProperty;
var subArray = new Dictionary<int, Dictionary<int, int>>();
foreach (var subItem in property.Value.Children())
{
var subProperty = subItem as JProperty;
var subSubArray = new Dictionary<int, int>();
foreach (var subSubItem in subItem)
{
var subSubProperty = subSubItem as JProperty;
subSubArray.Add(int.Parse(subSubProperty.Name), int.Parse((String)subSubProperty.Value));
}
subArray.Add(int.Parse(subProperty.Name), subSubArray);
}
menus.Add(int.Parse(property.Name), subArray);
}
编辑 - 解决方案
要生成我想要的Dictionary<>,我必须稍微更改一下 JSON 数组。当您使用方括号 [] 时,它会创建一个 List<>。当您使用大括号时,您可以生成Dictionary<>。
我已通过将 jSON 字符串更改为:
{"1": {"11": {"1": 1,"2": 2,"3": 3},"21": {"1": 1,"2": 2,"3": 3},"31": {"1": 1,"2": 2,"3": 3}},"4": {"12": {"1": 1,"2": 2,"3": 3},"22": {"1": 1,"2": 2,"3": 3},"32": {"1": 1,"2": 2,"3": 3}},"6": {"13": {"1": 1,"2": 2,"3": 3},"23": {"1": 1,"2": 2,"3": 3},"33": {"1": 1,"2": 2,"3": 3}}}
并使用以下代码进行反序列化:
JsonConvert.DeserializeObject < Dictionary<int, Dictionary<int, Dictionary<int, int>>>>(jSONString)
这就是我生成三维数组的方式:
"{" + string.Join(",", dict.Select(a => String.Format("\"{0}\": {1}", a.Key, String.Join(",", "{" + String.Join(",", a.Value.Select(b => String.Format("\"{0}\": {1}", b.Key, String.Join(",", "{" + String.Join(",", b.Value.Select(c => String.Format("\"{0}\": {1}", c.Key, String.Join(",", c.Value)))) + "}")))) + "}")))) + "}"
【问题讨论】:
-
您能否在问题中添加您的代码有什么问题?
-
@fxm 为您服务!
标签: c# arrays json multidimensional-array