当前位置: 首页 > 知识库问答 >
问题:

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

郎灿
2023-03-14

根据这里描述的内容,我应该使用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)

共有1个答案

苍恩
2023-03-14

显然,WRITE_DATES_AS_TIMESTAMPS功能在默认情况下已启用,因此我必须通过添加以下内容来禁用它:

mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
 类似资料:
  • 我需要一个自定义反序列化器来在复杂的POJO中转换字符串。反序列化工作直到使用反序列化器:特别是使用自定义反序列化器时,我的对象的非对象属性不会序列化。 我有一个restful Web服务,它有一个pojo作为参数。 所以我的类PreentivoWs需要一个方法。这里是类定义: 在jsonObject中,我有一个枚举定义为 但此对象需要转换反序列化程序: 并在财产上标注: fromString方法

  • 我想将json反序列化到类Foo: IBar有两个实现,但是当反序列化时,我总是想使用第一个实现。(理想情况下,这将使问题变得更容易,因为不需要运行时类型检查) 我相信我可以编写自定义反序列化程序,但我觉得一定有更简单的方法。 我找到了这个注释,它在没有列表的情况下非常有效。

  • 我有以下POJO,可以序列化为字节或。 当试图反序列化正文时,该错误似乎是从请求类生成的: 我怎样才能正确地反序列化地图?

  • 添加到DTO对象后,我想向服务器发送一个列表 从…起 当向控制器发送对象时,它会抛出

  • 我正在尝试在SpringBoot应用程序中编写Jackson反序列化器模块。主要原因是使用自定义Jackson反序列化程序对传入请求中的pin码进行加密。加密属性由spring组件 我试图从这个解决方案,但我的自定义反序列化程序仍然没有调用。而不是基于此,始终调用,并且不执行加密 提前谢谢 注释: 带有要加密字段的请求正文 杰克逊构型 模块: 最后反序列化器:

  • 我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif