java.time 未使用 jackson 正确反序列化

标签 java scala jackson java-time jsr310

根据描述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)

最佳答案

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

mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)

关于java.time 未使用 jackson 正确反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55640892/

相关文章:

java - 如何在 div 类中的 div 类中获取 div 类?

java - Jackson 无法将 JSON 映射到包含 Map 的对象

java - 并行流与串行流上的Reduce 与Collect 方法

java - 更换开关盒 : interface vs abstract class

java - 有线 scala 类型设计

scala - 如何从 Scala Play 中以 # 分隔的 url 中提取参数

json - Play : validate JSON with a field with possible multiple types

java - 具有多参数构造函数的 jackson JSON 反序列化

java - 如何将两个 JsonNode 与 Jackson 进行比较?

Java - Pisano 周期计算错误