我刚刚将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
不会忽略相同的内容。
还没有试过,但希望它会工作。