小编Ren*_*elm的帖子

Json.NET对没有时区的DateTimeOffset.MinValue进行反序列化DateTimeOffset值失败

在我的ASP.NET Core Web-API项目中,我正在对我的一个API控制器进行HTTP POST调用。

在评估JSON有效负载并反序列化其内容时,Json.NET偶然发现DateTime值为,0001-01-01T00:00:00并且无法将其转换为DateTimeOffset属性。

我注意到该值大概应该代表DateTimeOffset.MinValue的值,但是缺少时区似乎会使解串器崩溃。我只能想象DateTimeOffset.Parse试图将其转换为主机当前时区,从而导致DateTimeOffset.MinValue下溢。

该属性非常简单:

[JsonProperty("revisedDate", NullValueHandling = NullValueHandling.Ignore)]
public DateTimeOffset? RevisedDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是发送给客户端的响应:

{
    "resource.revisedDate": [
        "Could not convert string to DateTimeOffset: 0001-01-01T00:00:00. Path 'resource.revisedDate', line 20, position 44."
    ]
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Newtonsoft.Json v11.0.2,目前使用的是UTC + 2(德国)。异常回溯和错误消息在这里:https : //pastebin.com/gX9R9wq0

我无法修复调用代码,因此必须在行的一侧进行修复。

但是问题是:如何?

c# datetimeoffset json.net deserialization asp.net-core-mvc

5
推荐指数
2
解决办法
2688
查看次数