【发布时间】:2017-08-04 12:53:25
【问题描述】:
我正在使用 NewtonSoft.Json 进行 json 序列化
public class CommonBase
{
[JsonProperty(PropertyName = "u_customer_id")]
public long CustomerId { get; set; }
}
我想做一个条件序列化,如果CustomerId 的值为0,我想在json 序列化过程中为CustomerId 设置一个空白值。由于CommonBase 是一个基类,我无法将数据类型从long 更改为string。
我怎样才能做到这一点?
【问题讨论】:
-
您可以编写自己的自定义自定义序列化程序。此处示例:blog.maskalik.com/asp-net/…。你需要实现
WriteJson和ReadJson方法 -
@xszaboj..我不喜欢那个..我只是检查Json.Net是否为此提供任何内置功能或任何解决方法
-
您的预期结果是什么? "u_customer_id":null 或 "u_customer_id":"" 或在序列化时跳过该属性?
-
预期结果是 "u_customer_id":""
-
所以 json 属性有时是字符串(如果为空),有时是数字(如果不为空)。对于合同来说,这是一个非常糟糕的设计。谁对此负责?如果 u_customer_id 在所有情况下都是字符串,请检查合同描述
标签: c# .net serialization json.net jsonserializer