使用.NET的DataContractJsonSerializer
,我想反序列化一个JSON对象到我定义的类中。
但是,反序列化的对象比我需要的字段更多。
有没有办法让它反序列化我在相应类中指定的字段?
我试图避免这种SerializationException
:反序列化JSON对象时可以省略字段吗?
数据合同类型“XXX”,因为所需的数据成员“YYY”未找到无法反序列化。
使用.NET的DataContractJsonSerializer
,我想反序列化一个JSON对象到我定义的类中。
但是,反序列化的对象比我需要的字段更多。
有没有办法让它反序列化我在相应类中指定的字段?
我试图避免这种SerializationException
:反序列化JSON对象时可以省略字段吗?
数据合同类型“XXX”,因为所需的数据成员“YYY”未找到无法反序列化。
这是我如何解决.NET中的大部分JSON错误。我使用JSON.NET而不是内置的。
这里有一个简单的例子,从他们的文档无耻地采取:
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);
好运。
您可能需要考虑在对象上实现IExtensibleDataObject以及启用ignoreExtensionDataObject。 ignoreExtensionDataObject属性指定是否在反序列化时忽略未知数据。
也许可以使用['JavaScriptSerializer'](http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx)并制作自己的['JavaScriptConverter'] (http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptconverter.aspx)? (除非DataContractJsonSerializer具有指定反序列化实现的相同能力...) – 2011-05-25 18:01:10
的确,类[确实有方法](http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization .json.datacontractjsonserializer.datacontractsurrogate.aspx)使用['IDataContractSurrogate'](http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.idatacontractsurrogate.aspx)。 – 2011-05-25 18:03:48