【问题标题】:java.time not properly deserialised using jacksonjava.time 没有使用杰克逊正确反序列化
【发布时间】:2019-09-02 14:02:37
【问题描述】:

根据here 的描述,我应该使用JSR-310 表示而不是数字表示序列化ZonedDateTime 对象。但是,我得到了数字表示。可能是什么问题?

这是我配置我正在使用的映射器的方式:

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)

【问题讨论】:

    标签: java scala jackson java-time jsr310


    【解决方案1】:

    显然WRITE_DATES_AS_TIMESTAMPS 功能默认启用,所以我不得不通过添加禁用它:

    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
    

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      相关资源
      最近更新 更多