2010-03-25 82 views
4

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

  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属性吗?

回答

0

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

+0

有一个特定的JSON库,你会建议?似乎有相当一部分在那里。 – user163757 2010-03-25 16:28:02

+0

你知道阅读JSON序列化库的神奇思想吗?请告诉... – 2010-05-25 13:22:31

+0

查看http://www.json.org上的C#部分 – thelost 2010-05-25 15:40:58

4

JavaScriptSerializerSystem.Web.Extensions并且不知道约DataMemberAttribute

尝试DataContractJsonSerializer这是System.Runtime.Serialization.Json(.NET 40 - System.Runtime.Serialization.dll,.NET 3.5 - System.ServiceModel.Web.dll)

相关问题