当我对对象进行序列化时,对于某些字符串属性,我想输出除忽略以外的空字符串或输出null。
根据牛顿的文档,我可以这样做:
public class Data
{
public int ProductId { get; set; }
[DefaultValue("")]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Include)]
public string LargeData { get; set; }
}
但是,在我的测试案例中,它仍然输出null
Data D1 = new Data()
{
ProductId = 1
};
var b = JsonConvert.SerializeObject(D1);
输出为{"ProductId":1,"LargeData":null}
。我在做错什么吗?
答案 0 :(得分:5)
看着DefaultValueHandling
似乎没有任何方法可以做您想要的事情。
默认值属性仅在反序列化时使用,如果该属性未在JSON中指定。忽略/包含选择是与序列化相关的选择,而这些选择不影响序列化的值-只是是否应该进行序列化。>
除非您有将值实际设置为null的代码,否则最简单的选择是从.NET角度将属性默认设置为“”:
public class Data
{
public int ProductId { get; set; }
public string LargeData { get; set; } = "";
}