Очевидно, что при использовании объектов DateTime в ядре ASP.NET JSON.Net сериализует их с точностью до 7 цифр.
Пример:
"registrationDate": "2019-05-30T09:21:05.1676144-04:00",
или
"registrationDate": "2019-05-30T15:34:04.0929048Z",
In Dart Pad:
var t = DateTime.parse('2019-05-30T15:34:04.0929048Z');
Выходы:
Uncaught exception:
FormatException: Invalid date format
2019-05-30T15:34:04.0929048Z
но когда я урежу последнюю цифру ('8'):
var t = DateTime.parse('2019-05-30T15:34:04.092904Z');
дает:
2019-05-30 15:34:04.093Z
При использовании их в Dart из API, Dart принимает только шесть цифр точности и выдает ошибку, когда встречает 7-ю цифру.
Вот ссылка на документы Dart:
https://api.dartlang.org/stable/2.3.1/dart-core/DateTime/parse.html
Вот соответствующий код из их документов:
int parseMilliAndMicroseconds(String matched) {
if (matched == null) return 0;
int length = matched.length;
assert(length >= 1);
assert(length <= 6);
Маловероятно, что в ближайшее время будет какое-то исправление на стороне Дартс, поскольку это довольно фундаментальная библиотека.
Итак, кто-нибудь может мне сказать, как заставить мой ASP.NET Core API снизить точность на одну цифру? Эти даты везде в системе, и было бы здорово, если бы я мог просто изменить форматированный вывод из одного места.
Я думаю, что альтернативой было бы написать JsonConverter
, но я действительно не хочу делать это для каждого класса.
Идеи
ТИА