牛顿JSON默认字符串值不起作用



当我静止一个对象时,对于某些字符串属性,我想输出空字符串,而不是忽略或输出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}。我做错了吗?

看着 DefaultValueHandling看起来没有任何方法。

如果 delelialization ,默认值属性仅在JSON中指定的属性时使用。忽略/包括选择是序列化时相关的选择,而这些选择不会影响序列化的值 - 只是是否应该序列化。。P>

除非您有实际将值设置为null的代码,否则最简单的选项是将属性默认为"从.NET角度:

"。
public class Data
{
    public int ProductId { get; set; }
    public string LargeData { get; set; } = "";
}

最新更新