У меня есть приложение Web API, которое возвращает JSON для потребителей, которые, возможно, не используют технологии Microsoft. Когда мой контроллер возвращает объект с свойствами DateTime как JSON, он сериализует дату в этом формате:
2017-03-15T00:00:00-04:00
Это дает потребителю немного головной боли, поскольку они ожидают, что он будет в формате ISO 8601. Некоторые исследования говорят мне, что JSON.NET теперь использует ISO 8601 по умолчанию (я использую 9.0.1). Когда я запускаю этот код...
Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now));
... Я получаю это:
2017-03-15T09:10:13.8105498-04:00
Википедия показывает их как действительные форматы ISO 8601 при выражении полной даты и времени:
2017-03-15T11:45:42+00:00
2017-03-15T11:45:42Z
20170315T114542Z
Однако вывод, который я получил выше, точно не соответствует ни одному из них. Я хочу, чтобы форматтер использовал 2017-03-15T11:45:42Z
.
И, вероятно, достойный другого вопроса, добавление ниже строки в моей конфигурации веб-API кажется проигнорированным, поскольку оно продолжает возвращать JSON в дату, первоначально показанную выше:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
Я предполагаю, что как только я выясню основную проблему, проблема веб-API также может быть решена.