【问题标题】:Nested Object Deserialization of JSON results in an empty objectJSON的嵌套对象反序列化导致空对象
【发布时间】:2013-06-21 08:34:24
【问题描述】:

美好的一天

我正在尝试使用 Javascriptserializer 将 JSON 对象反序列化为 C# 类。此对象包含一个嵌套对象。这是对象的表示:

[{"ObjA":"FOO",
  "SubObjA":{
    "A":0,
    "B":true,
    "C":2,
    "D":0.2
    },
  "ObjB":false,
  "ObjC":295,
  }]

在 c# 中,我为这些创建了类:

public class ClassA
{
    public string ObjA { get; set; }
    public Collection<SubObjA> SubObjA { get; set; }
    public bool ObjB { get; set; }
    public int ObjC { get; set; }


}

public class SubObjA
{
    public int A { get; set; }
    public bool B { get; set; }
    public int C { get; set; }
    public decimal D { get; set; }
}

在反序列化对象时,我看到 SubObjA 集合没有填充 (Count = 0)

var Helper = new JavaScriptSerializer().Deserialize<ClassA[]>(Request["TheJSONIAmDeserializing"]);

为什么集合没有填充? (由于 Request[""] 被标记为 AJAX)

【问题讨论】:

  • 不是实际的类和属性名,必须进行更改以掩盖真实代码
  • 在我的版本中,除了集合之外的所有内容都正确填充

标签: c# ajax json deserialization javascriptserializer


【解决方案1】:

您的示例中的 SubObjA 是单个对象,但在您的类中它是一个集合,因此 JSON 应该看起来像

[{"ObjA":"FOO",
  "SubObjA":[{
    "A":0,
    "B":true,
    "C":2,
    "D":0.2
    }],
  "ObjB":false,
  "ObjC":295,
  }]

注意 SubObjA 周围的括号。

【讨论】:

  • 该死的,你是对的。 JSON.Stringify 仅返回括号而不是方括号,因为它当前填充了集合中的 1 个项目。
  • 再次感谢您。无法点击为什么它不起作用,一切似乎都正确
猜你喜欢
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-28
  • 2019-03-08
  • 1970-01-01
相关资源
最近更新 更多