java.time неправильно десериализован с использованием Джексона - PullRequest
0 голосов
/ 11 апреля 2019

Исходя из того, что здесь описано , я должен сериализовать ZonedDateTime объект, используя представление JSR-310, а не числовое. Тем не менее, я получаю числовое представление. В чем может быть проблема?

Вот как я настраиваю маппер, который я использую:

object JsonFormatter {
  private val mapper = new ObjectMapper() with ScalaObjectMapper

  mapper
    .registerModule(DefaultScalaModule)
    .registerModule(new JavaTimeModule())
    .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)

  def fromJson[T](json: String)(implicit m: Manifest[T]): T = mapper.readValue[T](json.getBytes)

  def toJson(value: Any): String = mapper.writeValueAsString(value)
}

Это пример десериализации, которую я получаю

{"from":"CityA","to":"CityB","departureAt":1554970560.000000000,"arriveAt":1554984660.000000000,"duration":{"length":65,"unit":"MINUTES","finite":true}}

для следующего класса дел:

case class Stock(from: String,
                 to: String,
                 departureAt: ZonedDateTime,
                 arriveAt: ZonedDateTime,
                 duration: Duration)

1 Ответ

2 голосов
/ 11 апреля 2019

Очевидно WRITE_DATES_AS_TIMESTAMPS функция включена по умолчанию, поэтому мне пришлось отключить ее, добавив:

mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
...