2017-03-14 21 views
0

我做的使用NewtonSoft.Json如何做到系列化有條件使用C# - NewtonSoft.Json

public class CommonBase 
{ 
    [JsonProperty(PropertyName = "u_customer_id")] 
    public long CustomerId { get; set; } 
} 

我想要做一個有條件的序列化,這樣,如果CustomerId值是0,我想設置一個JSON序列化json序列化期間CustomerId的空白值。由於CommonBase是基類,我無法將數據類型從long更改爲string

我該如何做到這一點?

+0

您可以編寫自己的自定義序列化程序。例如:http://blog.maskalik.com/asp-net/json-net-implement-custom-serialization。你需要實現'WriteJson'和'ReadJson'方法 – xszaboj

+0

@ xszaboj ..我不喜歡那..我只是檢查是否Json.Net提供任何內置功能爲此或任何解決方法 – vmb

+0

您的預期結果是什麼? *「u_customer_id」:null *或*「u_customer_id」:「」*或在序列化時跳過該屬性? –

回答

0

我已通過將CustomerId屬性更改爲可空來解決此問題。

public long? CustomerId { get; set; } 
1

你幾乎在你的問題標題中有答案。你正在尋找的是Conditional Property Serialization

你只需要添加像這樣命名的方法:ShouldSerialize + PropertyName。在你的情況下,方法應該看起來像:

public bool ShouldSerializeCustomerId() 
{ 
    return SomeCondition; 
} 

P.如果你正在創建基類,你可能想要抽象類。

相關問題