2017-03-14 20 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.如果你正在创建基类,你可能想要抽象类。

相关问题