Проблема сериализации JodaTime - PullRequest
0 голосов
/ 03 мая 2018

У меня есть приложение, использующее Java JodaTime. Однако после обновления до новейшей библиотеки json4s-core 3.6.0-M3 появляются следующие ошибки при преобразовании строк даты с часовым поясом в дату.

Caused by: java.lang.IllegalArgumentException: No instant converter found for type: org.json4s.ext.DateParser$ZonedInstant

Это происходит, когда я пишу собственный сериализатор DateTime с резервным вариантом для нескольких форматов:

 case JString(s) ⇒ Try(dateTimeFormat.parseDateTime(s)).getOrElse(new DateTime(DateParser.parse(s, format)))

Пример строки, вызывающей проблему: 2018-05-02T21: 43: 29Z

Я убедился, что я использую jodatime 2.9.2 и соответствующий файл json4s-ext lib

1 Ответ

0 голосов
/ 03 мая 2018

Я оставлю свой ответ на случай, если кто-то столкнется с подобной проблемой. Я понял, что, поскольку я переопределяю сериализатор по умолчанию DateTime, мне нужно было внести следующее изменение в свой настраиваемый сериализатор, чтобы иметь дело с ZonedInstant

case JString(s) ⇒ Try(dateTimeFormat.parseDateTime(s)).getOrElse({
    val zonedInstant = DateParser.parse(s, format)
    new DateTime(zonedInstant.instant, DateTimeZone.forTimeZone(zonedInstant.timezone))
  })
...