2
當使用XSD.EXE生成從XML架構的類時,它產生一個給定的對象的任何原語的xxxSpecified成員:XSD.EXE + JSON.NET - 如何處理xxxSpecified生成的成員?
<xs:complexType name ="Foo">
<xs:all>
<xs:element name ="Count" type = "xs:integer"/>
</xs:all>
</xs:complexType>
....生成:
public class Foo
{
public int Count { get; set; }
public bool CountSpecified { get; set; }
}
它出現在最新版本的JSON.NET可以在反序列化時自動設置這些屬性。
string request = "{ Count : 10 }";
var object = JsonConvert.Deserialize<Foo>(request)
Assert.IsTrue(object.Count = 10); // Yup
Assert.IsTrue(object.CountSpecified == true); //Also yup - JSON.NET works!
然而,去其他方式的情況下,xxxSpecified特性被包括在JSON輸出,這是不正確的,因爲它不是架構的一部分。
string request = JsonConvert.Serialize(object);
//{
// Count: 10,
// CountSpecified : true <-- This is incorrect - should not be output
//}
是否有我缺少的設置控制是否輸出xxxSpecified屬性?我怎樣才能壓制它?
(注:這是一個問題的回答排列這裏:
JSON.NET, XmlSerializer and "Specified" property
...但它涉及到創建擴展類,這是不可能對我來說,因爲有幾百個班架構,我無法改變繼承層次所以答案是行不通尋找另一種方式)
輝煌的答案。像魅力一樣工作。謝謝! –