【问题标题】:Deserializing JSON with JavaScriptSerializer C#使用 JavaScriptSerializer C# 反序列化 JSON
【发布时间】:2010-03-25 14:59:03
【问题描述】:

我正在尝试使用 JavaScriptSerializer 来反序列化 C# 中的一些 JSON,并且对 DataMember 的使用有几个问题。

  1. 我希望我的 DataContract 类有一个名为“Parts”的属性,该属性映射到 JSON 对象“rings”。如果我设置 DataMember Name="rings" 并将属性命名为“Rings”,一切都会按预期工作。但是,如果我将属性命名为“Parts”(保留 DataMember Name="rings")。部分始终为空。

    // this is always null
    [DataMember(Name = "rings")]
    public ArrayList Parts { get; set; }
    
    // this works fine
    [DataMember(Name = "rings")]
    public ArrayList Rings { get; set; }
    
  2. 在反序列化时,是否可以将多个 json 对象映射到单个属性。例如,输入的 json 字符串可能不包含“环”,而是包含“点”或“线”。我可以将所有三种类型都映射到 Parts 属性吗?

【问题讨论】:

    标签: c# json serialization


    【解决方案1】:

    JavaScriptSerializerSystem.Web.Extensions 中,不知道DataMemberAttribute

    试试System.Runtime.Serialization.Json中的DataContractJsonSerializer(.net 40 - System.Runtime.Serialization.dll,.net 3.5 - System.ServiceModel.Web.dll)

    【讨论】:

      【解决方案2】:

      我建议您为 .NET 使用其他一些 JSON 实现。其中有许多是开源的,不需要更改类。您只需传递您的对象,他们就知道该怎么做。

      【讨论】:

      • 是否有您推荐的特定 JSON 库?那里似乎有很多。
      猜你喜欢
      • 1970-01-01
      • 2012-09-20
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多