包含动态key的json如何转成对象?

陈悕 2015-07-13 11:01:50
调用别人的接口,但是他们给的json的key是动态的,我说要他们改成json数组,他们说改不了,那只能自己来解析了。
那么问题来了,json的key是静态的很好解析,当key是动态的时候我虽然知道有可能解析,但是毫无头绪,如何操作还没有思路,大家能给点提示吗?能用jsonConvert.DeserializeObject反序列化成对象就行
返回数据格式如下:
{
"1":
{"id":"1",
"name":"a",
"list":
{
"1":{"id":"1","title":"aa"},
"4":{"id":"4","title":"bb"}
}
},
"2":
{"id":"2",
"name":"z",
"list":
{
"6":{"id":"6","title":"cc"},
"7":{"id":"7","title":"dd"}
}
}
}
...全文
549 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanghui0380 2015-07-13
  • 打赏
  • 举报
回复
Newtonsoft.Json 即可,当然他出来的jobject,你按层级自己访问把
by_封爱 2015-07-13
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
Dictionary<T1,T2>来接收
正解.....T1是字符串 T2是对象 其中包含字符串,字符串以及又一个dic...
陈悕 2015-07-13
  • 打赏
  • 举报
回复
这做接口的我也是服了他们了。但既然他们该不了,也不能强求是不是
Xanl 2015-07-13
  • 打赏
  • 举报
回复
看不懂前面的1、2 、4、6、7做什么的、做接口的人都在想什么
  • 打赏
  • 举报
回复
不过真的应该“鄙视”一下你所说的“别人”。把数组写成正规的son数组难道很难吗?
  • 打赏
  • 举报
回复
Dictionary<T1,T2>来接收
  • 打赏
  • 举报
回复
可以使用 Newtonsoft.Json,它支持将 json 字符串解析为灵活的 JsonToken。
陈悕 2015-07-13
  • 打赏
  • 举报
回复
[quote=引用 9 楼 starfd 的回复:]
JsonConvert.DeserializeObject<Dictionary<string, YourItemClass>>(yourString);
搞定了,我原本的想法是把对方返回的数据里的动态的key给去掉,变成数组,因为那样可以直接反序列化为泛型集合List,然后就好操作了。现在看来多次一举,我一直没怎么用的Dictionary在js中也可以遍历,这我今天才会。唉,如果我早能想到也不用费这么多时间了。谢谢大家,又会了一招。
  • 打赏
  • 举报
回复
引用 12 楼 sp1234 的回复:
"6":{"id":"6","title":"cc"}, "7":{"id":"7","title":"dd"} 这种东西,说明了他定义时的纠结。他80%的可能性是实在是不知道如何把两个东西并列写在一起啊!
  • 打赏
  • 举报
回复
"6":{"id":"6","title":"cc"}, "7":{"id":"7","title":"dd"} 这种东西,说明了他定义时的纠结。他80%的可能性是实在是不知道如何把两个东西并列写在一起啊!
big_shot 2015-07-13
  • 打赏
  • 举报
回复
用Newtonsoft.Json接收
  • 打赏
  • 举报
回复
除了顶层以外,你还可以看它的 list 属性的结构,就知道遇到什么人了。遇到这些人没办法,他只会那一招来定义,根本不会正常地考虑数组。所以也甭想了。
  • 打赏
  • 举报
回复
JsonConvert.DeserializeObject<Dictionary<string, YourItemClass>>(yourString);
都谢了拿Dictionary来接收了,还在问来问去……
陈悕 2015-07-13
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
可以使用 Newtonsoft.Json,它支持将 json 字符串解析为灵活的 JsonToken。
用哪个类呢?我用Newtonsoft.Json最多的就是序列化和反序列化了

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧