使用.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