大佬教程收集整理的这篇文章主要介绍了Json.NET(Newtonsoft.Json) – 两个同名的“属性”?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Json如下:
{ "TBox": { "Name": "smallBox","Length": 1,"Width": 1,"Height": 2 },"TBox": { "Name": "MedBox","Length": 5,"Width": 10,"Height": 10 },"TBox": { "Name": "LargeBox","Length": 20,"Width": 20,"Height": 10 } }
当我尝试将这个Json解析为JObject时,JObject只知道LargeBox. smallBox和MedBox的信息丢失了.显然这是因为它将“TBox”解释为属性,并且该属性正在被覆盖.
我从一个用Delphi编码的服务接收这个Json.我正在尝试为该服务创建一个C#代理.在Delphi方面,“TBox”被理解为被返回对象的类型.然后将内部属性(“名称”,“长度”,“宽度”,“高度”)理解为常规属性.
我可以序列化和反序列化具有Name,Length,Width和Height属性的自定义“TBox”对象.没关系.
我想要做的是逐步完成所有TBox部分,以便提取以下三个Json字符串.
第一:
{ "Name": "smallBox","Height": 2 }
第二:
{ "Name": "MedBox" "Length": 5,"Height": 10 }
第三:
{ "Name": "LargeBox" "Length": 20,"Height": 10 }
一旦我掌握了这些字符串,我就可以将我的内容序列化和反序列化.
我发现Newtonsoft.Json非常好.如果我可以避免它,我真的不想搞乱其他框架.
任何帮助将不胜感激.
关于可以对服务器进行的更改,我的输入非常有限.
using Newtonsoft.Json; using Newtonsoft.Json.Linq; JsontextReader jsonReader = new JsontextReader(reader); jsonReader.Read(); while(jsonReader.Read()) { if(jsonReader.TokenType == JsonToken.StartObject) { JObject tBox = JObject.Load(jsonReader); } }
但请注意,RFC说“对象中的名称应该是唯一的”,所以如果可以的话,建议更改格式.
编辑:这是一个没有重复键的替代设计:
[ { "TBox": { "Width": 1,"Name": "smallBox","Height": 2 } },{ "TBox": { "Width": 10,"Name": "MedBox","Height": 10 } },{ "TBox": { "Width": 20,"Name": "LargeBox","Height": 10 } } ]
以上是大佬教程为你收集整理的Json.NET(Newtonsoft.Json) – 两个同名的“属性”?全部内容,希望文章能够帮你解决Json.NET(Newtonsoft.Json) – 两个同名的“属性”?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。