首页 > 解决方案 > 正确反序列化可选可选类型

问题描述

我有以下课程:

class X(
    val x: Optional<Optional<Int>>
)

我可以使用以下映射器对其进行序列化:

val mapper = ObjectMapper().registerModule(Jdk8Module())

对此:

mapper.valueToTree(X(Optional.of(Optional.of(1)))) // -> {"x":1}
mapper.valueToTree(X(Optional.of(Optional.empty()))) // -> {"x":null}
mapper.valueToTree(X(Optional.empty())) // -> {}

但可悲的是,它不能以相反的方式工作:

{"x":1} -> X(Optional.of(Optional.of(1)))
{"x":null} -> X(Optional.of(Optional.empty())
{} -> X(Optional.empty())

具体来说,我想{"x":null}反序列化为X(Optional.of(Optional.empty()) 有没有办法做到这一点?

标签: javakotlinjacksonoptional

解决方案


推荐阅读