Сбой .Net Core 3.0 System.Text.Json с минимальной датой и временем UTC - PullRequest
2 голосов
/ 30 сентября 2019

Я перешел с 2.2 на 3.0, и до сих пор все было довольно гладко, однако при замене Newtonsoft новым System.Text.Json я столкнулся со следующей проблемой.

При попытке десериализацииМинимальное значение DateTime со смещением UTC выдает следующее исключение

Необработанное исключение. System.Text.Json.JsonException: значение JSON не удалось преобразовать в System.DateTime. Путь: $ .DateCreated |LineNumber: 2 |BytePositionInLine: 43

Пример:

using System;
using Newtonsoft.Json;      

class Program
{
    static void Main(string[] args)
    {
        var json = "{\"MyDateTime\": \"0001-01-01T00:00:00+01:00\"}";

        var newtonDeserialized = JsonConvert.DeserializeObject<Class>(json);

        //Bad things happen here.
        var systemDeserialized =  System.Text.Json.JsonSerializer.Deserialize<Class>(json);

        Console.WriteLine(newtonDeserialized.MyDateTime);
        Console.WriteLine(systemDeserialized.MyDateTime);
    }
}

class Class
{
    public DateTime MyDateTime {get; set;}
}

Онлайн-пример можно найти здесь Fiddle .

Я думаю, я мог бы написать свой собственныйСериализатор DateTime, но должен быть более простой / понятный способ выполнить то, что сделал Newtonsoft без какой-либо настройки.

Это происходит на 3.0.100

...