有没有办法用Jackson序列化Optional的示例< T>?

mzsu5hc0  于 2022-11-08  发布在  其他
关注(0)|答案(2)|浏览(135)

Jackson要求在无参数构造函数上使用public修饰符,而jdk8的Optional只提供静态方法。可能的解决方法是什么?一般来说,如果我必须使用一个第三方库来提供遵循此模式的类,我该怎么办?

56lgkhnf

56lgkhnf1#

不,Jackson不需要一个公共的无参数构造函数;任何访问级别(甚至private)都可以工作。但是如果没有提供自定义反序列化器,它确实需要一个无参数构造函数。
新类型所需要的,通常是扩展模块。实际上有计划增加一个“JDK 8模块”,因为核心Jackson目前只需要1.6,并且基线在不久的将来不太可能移动。但是增加对新类型的支持应该相对容易:例如,JacksonGuava数据类型模块(https://github.com/FasterXML/jackson-datatype-guava)增加了对Guava的optional的支持。同时,您可以从那里复制反序列化器,通过您定义的SimpleModule使用它。

nwlls2ji

nwlls2ji2#

Optional支持已经添加到Jackson中,可以通过将Jdk8Module添加到ObjectMapper

JsonMapper objectMapper =
        JsonMapper.builder().addModule(new JavaTimeModule()).build();

相关问题