Mam aplikację Web API, która zwraca JSON do konsumentów, którzy nie korzystają z technologii Microsoft. Kiedy mój kontroler zwraca obiekt o właściwościach DateTime jak JSON, to serializes datę w tym formacie:Jak uzyskać, aby JSON.NET przekształcił datę/godzinę do ISO 8601?
2017-03-15T00:00:00-04:00
To daje konsumentowi trochę ból głowy jak oni oczekiwać, że będzie w normie ISO 8601 format. Niektóre badania powiedziały mi, że JSON.NET używa teraz domyślnie ISO 8601 (używam wersji 9.0.1). Kiedy uruchomić ten kod ...
Clipboard.Copy(JsonConvert.SerializeObject(DateTime.Now));
... mam to:
2017-03-15T09:10:13.8105498-04:00
Wikipedia przedstawia je jako poprawne formaty ISO 8601, gdy wyrażając pełną datę i czas:
2017-03-15T11:45:42+00:00
2017-03-15T11:45:42Z
20170315T114542Z
Jednak dane wyjściowe, które otrzymałem powyżej, nie pasują dokładnie do żadnego z nich. Chcę, aby formatator używał 2017-03-15T11:45:42Z
.
I pewnie warta innej kwestii całkowicie, dodając poniższy wiersz w moim Web API config wydaje się być ignorowane, ponieważ w dalszym ciągu, aby powrócić JSON w terminie pierwotnie przedstawionego powyżej:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
Zakładam, że kiedyś Wyjaśnienie podstawowej kwestii, problem Web API może również zostać rozwiązany.
Chciałbym móc to powtórzyć kilka razy. Więcej osób powinno zwracać uwagę na daty JSON z formatowaniem ISO 8601. –