GSON - Как всегда включать миллисекунды в JSON? - PullRequest
0 голосов
/ 26 марта 2019

Я создаю приложение для Android, которое взаимодействует с REST API на основе .NET.

Если в моей таблице в SQL Server есть 2 строки со следующими значениями даты и времени:

  • 2019-01-01 00: 00: 00.000
  • 2019-01-01 00: 00: 00.113

Тогда возвращаемый json будет иметь следующие значения:

  • 2019-01-01T00: 00: 00
  • 2019-01-01T00: 00: 00,113

Так что я не знаю, как предоставить шаблон для setDateFormat при создании экземпляра Gson.

Если я использую GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss"), мой gson может обобщить оба случая, но потеряет миллисекундную часть.

Если я использую GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS"), то мой gson не потеряет доли миллисекунды во втором случае, но при работе с первым случаем выдаст исключение.

Как я могу успешно разобрать время в двух случаях, но при этом достичь миллисекунды? Любое предоставленное решение будет оценено. Я не против, если что-то, что мне нужно, на стороне сервера или на стороне клиента.

1 Ответ

0 голосов
/ 26 марта 2019

После обхода проблемы я сам нашел решение, благодаря peter.petrov

Это потому, что я настраиваю свой API на возврат данных в формате json, а не в формате xml, в мой файл WebApiConfig.cs. Поэтому я чувствую, что не могу контролировать, как он строит свой формат времени. Но я наконец нашел это. Это мой файл WebApiConfig.cs:

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
json.SerializerSettings.DateFormatString = "yyyy-MM-dd'T'HH:mm:ss.fff";
config.Formatters.Remove(config.Formatters.XmlFormatter);

Теперь мой сервер всегда включает миллисекунду, несмотря ни на что.

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...