java - 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 - java.time没有使用 jackson 正确反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55640892/

相关文章:

mongodb - 使用scala创建嵌套字段并将数据框存储到MongoDB?

json - Spring 3.1 自定义 JSON 转换器

java - 如何使用 jackson 将带有 json 值的 Map<String, String> 转换为 POJO?

java - 当前的 HotSpot JVM 是否默认并行运行?

java - 在eclipse中调试时实时更改变量?

java - Spring MVC 3.2.1 中没有 Json 响应

eclipse - 在CMD中运行RabbitMq

scala - play 2.6.x 记录请求体和处理时间

java - IntelliJ IDEA : Error:scalac: Class javax. servlet.ServletException not found - 继续 stub

java - 如何通过jackson库仅比较两个JSON对象的结构(忽略值)?