反序列化JSON对象时可以省略字段吗?

时间:2011-05-25 17:59:20

标签: .net json exception deserialization

使用.NET的DataContractJsonSerializer,我试图将JSON对象反序列化为我定义的类。
但是,我反序列化的对象比我需要的字段多 有没有办法让它只反序列化我在相应类中指定的字段?
我试图避免这种SerializationException

  

无法对数据协定类型“xxx”进行反序列化,因为找不到所需的数据成员“yyy”。

2 个答案:

答案 0 :(得分:3)

这就是我在.NET中修复大多数JSON错误的方法。我使用JSON.NET而不是内置的。

http://json.codeplex.com/

这是一个从他们的文档无耻地采取的快速示例:

Product product = new Product();

product.Name = "Apple";
product.Expiry = new DateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = new string[] { "Small", "Medium", "Large" };

string output = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "Expiry": "\/Date(1230375600000+1300)\/",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}

Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);
祝你好运。

答案 1 :(得分:0)

您可能希望了解在对象上实施IExtensibleDataObject以及启用ignoreExtensionDataObject。 ignoreExtensionDataObject属性指定在反序列化时是否忽略未知数据。