Ubi*_*Che 4 json properties duplicates json.net
我正在使用C#编写.NET Framework 3.5.
我试图将一些Json解析为JObject.
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 }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试将这个Json解析为JObject时,JObject只知道LargeBox.SmallBox和MedBox的信息丢失了.显然这是因为它将"TBox"解释为属性,并且该属性正在被覆盖.
我从一个用Delphi编码的服务接收这个Json.我正在尝试为该服务创建一个C#代理.在Delphi方面,"TBox"被理解为被返回对象的类型.然后将内部属性("名称","长度","宽度","高度")理解为常规属性.
我可以序列化和反序列化具有Name,Length,Width和Height属性的自定义"TBox"对象.没关系.
我想要做的是逐步完成所有TBox部分,以便提取以下三个Json字符串.
第一:
{
"Name": "SmallBox",
"Length": 1,
"Width": 1,
"Height": 2 }
Run Code Online (Sandbox Code Playgroud)
第二:
{
"Name": "MedBox"
"Length": 5,
"Width": 10,
"Height": 10 }
Run Code Online (Sandbox Code Playgroud)
第三:
{
"Name": "LargeBox"
"Length": 20,
"Width": 20,
"Height": 10 }
Run Code Online (Sandbox Code Playgroud)
一旦我掌握了这些字符串,我就可以将我的内容序列化和反序列化.
我发现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);
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,RFC说"对象中的名称应该是唯一的",所以如果可以的话,建议更改格式.
编辑:这是一个没有重复键的替代设计:
[
{
"TBox": {
"Width": 1,
"Length": 1,
"Name": "SmallBox",
"Height": 2
}
},
{
"TBox": {
"Width": 10,
"Length": 5,
"Name": "MedBox",
"Height": 10
}
},
{
"TBox": {
"Width": 20,
"Length": 20,
"Name": "LargeBox",
"Height": 10
}
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12241 次 |
| 最近记录: |