1

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

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

这可以做到吗?

4

2 回答 2

0

仅作记录 - 如果有人遇到同样的问题 - 似乎这不能用 newtonsoft json 转换器完成。
事实证明,它首先忽略了默认值,然后才将您CustomConverter的 s 用于具有值的剩余属性。

于 2013-06-28T20:10:30.803 回答
-2

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

通过这种方式,JsonSerializer 现在将假定这null不是 DateTime 的默认值,因此您的 JsonConvertor 将在遇到nullDateTime 时工作。请参阅下面的示例。

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

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

还没有尝试过,但希望它会起作用。

于 2013-05-08T10:20:17.303 回答