【问题标题】:Is there any way to serialize an instance of Optional<T> with Jackson?有没有办法用 Jackson 序列化 Optional<T> 的实例?
【发布时间】:2014-02-01 14:18:35
【问题描述】:

Jackson 要求在无参数构造函数上使用 public 修饰符,而 jdk8 的 Optional 仅提供静态方法。有哪些可能的解决方法?一般来说,如果我必须使用提供遵循这种模式的类的 3rd 方库,我该怎么办?

【问题讨论】:

标签: java serialization jackson


【解决方案1】:

不,Jackson 不需要公共的无参数构造函数;任何访问级别(甚至private)都可以。但如果没有提供自定义反序列化器,它确实需要一个无参数的构造函数。

新类型所需要的,通常是扩展模块。实际上有计划添加一个“JDK8 模块”,因为核心 Jackson 目前只需要 1.6,并且基线不太可能在不久的将来移动。但是添加对新类型的支持应该相对容易:例如,Jackson Guava 数据类型模块 (https://github.com/FasterXML/jackson-datatype-guava) 添加了对 Guava 的 optional 的支持。同时,您可以从那里复制反序列化器,通过您定义的SimpleModule 使用它。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
相关资源
最近更新 更多