2016-01-31 76 views
0

在我的POCO對象中,我有一些可能包含或不包含某些數據的子對象。但是,它們在對象初始化期間被聲明,因此它們不爲空。NullValueHandling屬性不爲空但沒有數據的屬性

當我將它們轉換爲JSON對象時,即使將NullValueHandling設置爲忽略,它們也會顯示,因爲它們不爲null。

處理它們的最佳方法是什麼,以便在我將POCO對象序列化爲JSON時不顯示它們?

這裏有一個POCO對象的例子:

public class Person 
{ 
    [JsonProperty("id")] 
    public Guid Id { get; set; } 

    [JsonProperty("firstName")] 
    public string FirstName { get; set; } 

    [JsonProperty("lastName")] 
    public string LastName { get; set; } 

    [JsonProperty("addresses", NullValueHandling = NullValueHandling.Ignore)] 
    public List<Address> Addresses { get; set; } = new List<Address>(); 
} 

在這個例子中,即使我沒有這個人的任何地址,當序列化Person類,我看到addresses: []爲空數組。

我真的希望能夠忽略其中沒有數據的所有屬性。處理這個問題的最佳方法是什麼?

回答

1

那麼答案似乎很簡單: Can Newtonsoft Json.NET skip serializing empty lists?

如果你被允許延長原有的類,然後添加一個 ShouldSerializePropertyName功能吧。這應該返回一個 布爾值,指示該屬性是否應當爲該類的當前實例序列化爲 。在你的例子中,這可能看起來像這樣 (未經測試,但你應該得到的圖片):

+1

我喜歡它,當解決方案是這麼簡單:-) – Sam