Json   发布时间:2022-04-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Json.NET(Newtonsoft.Json) – 两个同名的“属性”?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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 }
}

当我尝试将这个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,请注明来意。