我刚将json序列化程序从newtonsoft 4.5升级到5 -
我有一个自定义JsonConverter
来处理DateTime
类型,它会将我的日期转换为我使用过的数字,但DafaultValueHandling
设置为DefaultValueHandling.Ignore
它不适用于{ {1}}是DateTime
。
我希望我的自定义null
转换JsonConverter
的值,即使它们为空,也可以使用DateTime
设置。
可以这样做吗?
答案 0 :(得分:0)
仅供记录 - 如果有人遇到同样的问题 - 似乎这不能用newtonsoft json转换器完成。
事实证明,它首先忽略了defualt值的值,然后才将CustomConverter
s用于具有值的左侧属性。
答案 1 :(得分:-2)
由于DateTime's
默认值为null
,因此您的DefaultValueHandling.Ignore
设置会忽略它。所以在这里你可以为DateTime
属性设置自己的默认值。
通过这种方式,JsonSerializer现在假设null
不是DateTime的默认值,因此JsonConvertor在DateTime中遇到null
时会起作用。请参阅下面的示例。
public class TempClass
{
[DefaultValue(DateTime.MinValue)]
public DateTime CurrentDate;
}
在上面的示例中,DateTime.MinValue
被设置为CurrentDate属性的默认值。因此,如果CurrentDate
为空,则DefaultValueHandling.Ignore
不会忽略相同内容。
没试过,但希望它能奏效。