在默认值上使用JsonConverter而忽略默认值



我刚刚将json序列化器从newtonsoft 4.5升级到5 -
我有一个自定义的JsonConverter来处理DateTime类型,它将我的日期转换为我使用的数字,但是将DafaultValueHandling设置为DefaultValueHandling.Ignore,它不适用于DateTime 's,即null

我希望我的自定义JsonConverter转换DateTime的值,即使它们是空的,但也使用设置DefaultValueHandling.Ignore

只是为了记录-如果有人遇到同样的问题-似乎这只是不能用newtonsoft json转换器完成。
结果是,它首先忽略默认值,然后才对剩下的有值的属性使用CustomConverter s。

由于DateTime's的默认值是null,因此您的DefaultValueHandling.Ignore设置忽略它。所以在这里你可以为DateTime属性设置你自己的默认值。

通过这种方式,JsonSerializer现在将假定null不是DateTime的默认值,因此当您的jsonconverter在DateTime中遇到null时将工作。请看下面的例子。

public class TempClass
{
    [DefaultValue(DateTime.MinValue)]
    public DateTime CurrentDate;
}

在上面的例子中,DateTime.MinValue被设置为CurrentDate属性的默认值。因此,如果CurrentDate为空,则DefaultValueHandling.Ignore不会忽略相同的内容。

还没有试过,但希望它会工作。

相关内容

  • 没有找到相关文章