有没有办法用Jackson序列化Optional <t>的实例?</t>

时间:2014-01-13 17:51:52

标签: java serialization jackson

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

1 个答案:

答案 0 :(得分:1)

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

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