2016-05-04 40 views
0

我的web.config中有一個字符串列表,它描述了允許在我的web api中序列化的模型成員的名稱(由Entity Framework生成) 。
我該如何在運行時設置[IgnoreDataMember]屬性?
這個想法是,不應該暴露所有的數據,應該暴露的配置,應該可以配置,而無需重新編譯。
到目前爲止,我只是將所有未包含在該列表中的成員的值設置爲null。但是這個解決方案並不是最優的, datetime類型的成員序列化爲"0001-01-01T00:00:00",此外,響應包含大量不必要的信息(響應可能會增長到150MB)。因此,從序列化過程中刪除成員會更好。如何在運行時從JSON/XML序列化中排除數據成員

回答

0

您可以使用屬性:

[XmlIgnore]爲XML或[JsonIgnore]的JSON。

例如:

[XmlIgnore] 
public string MyString { get; set; } 

[JsonIgnore] 
public string MyString { get; set; } 

希望這有助於。

+0

另外,不要忘記分別使用'System.Xml.Serialization'或'Newtonsoft.Json'。 –

+0

''[IgnoreDataMember]'適用於兩者,我知道。但是這必須根據配置在運行時設置... – Chris

+0

我明白了。您可以編寫自己的JSON轉換器,以便在運行時使用您的條件。另一篇文章可能會幫助:[這裏](http://stackoverflow.com/questions/27397494/web-api-conditional-serialization-of-properties-at-runtime) –

0

我用[DataMember(EmitDefaultValue = false)]解決了它。因此,所有設置爲null的屬性都不包含在響應中。然而,這不是最好的解決方案,因爲現在我無法發送任何空值,而且招搖也顯示了完整的模型。

相關問題