Я перешел с 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