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

时间:2013-05-07 07:54:54

标签: c# json json.net

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

我希望我的自定义null转换JsonConverter的值,即使它们为空,也可以使用DateTime设置。

可以这样做吗?

2 个答案:

答案 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不会忽略相同内容。

没试过,但希望它能奏效。

相关问题