Как преобразовать Jackson JavaTimeModule в Java Instant

в Jackson JavaTimeModule объекты java time преобразуются в метки времени в for of 1421261297.356000000, где целая часть — это количество секунд, а десятичная часть — количество наносекунд Instant.

Я хочу преобразовать это обратно в ZonedDateTime, поэтому первым шагом будет преобразование этого timestamp string в Instant, но этот формат полностью не соответствует стандарту, и поэтому не существует никакого метода java.time (о котором я знаю) для преобразования 1421261297.356000000 напрямую в Instant (без потери наносекундной информации).

Я мог бы сделать некоторые string манипуляции и извлечь секунды и добавить наносекунды позже, но было бы неплохо не изобретать велосипед с таким шаблонным кодом, поэтому мой вопрос: Существуют ли какие-либо стандартные способы, методы или классы? , чтобы преобразовать строку временной метки Джексона JavaTimeModule в строку Instant?`


person Michel Feinstein    schedule 07.01.2018    source источник
comment
Почему бы вам не разобрать JSON с Джексоном в первую очередь? Он проанализирует значение до Instant для вас.   -  person JB Nizet    schedule 07.01.2018
comment
Потому что я использую его на Android с Retrofit + Moshi в приложении и Jersey + Jackson на веб-сервере. Я мог бы изменить его, чтобы использовать Jackson с Retrofit, но я хочу придерживаться Moshi для простоты и лучшей интеграции с Retrofit.   -  person Michel Feinstein    schedule 07.01.2018
comment
Уже проверил это, поможет ли это?   -  person pirho    schedule 07.01.2018
comment
Это работает, только если я использую Джексона, но я использую Моши.   -  person Michel Feinstein    schedule 07.01.2018
comment
Об этом уже спрашивали и отвечали пару раз. Пожалуйста, используйте свои поисковые навыки. Я не слышал о стандартном методе для этого, но кодировать его довольно просто.   -  person Ole V.V.    schedule 08.01.2018
comment
Возможный дубликат Невозможно преобразовать из java Double в java Date   -  person Ole V.V.    schedule 08.01.2018
comment
Возможный дубликат преобразования эпохи в ZonedDateTime в Java (ответы там немного больше, чем вы просите, но вы можете просто вынуть соответствующую часть).   -  person Ole V.V.    schedule 08.01.2018
comment
Вы также можете настроить Jackson для создания даты и времени смещения ISO-8601.   -  person Mark Rotteveel    schedule 08.01.2018