Java 正确反序列化可选类型
我有以下课程:Java 正确反序列化可选类型,java,kotlin,jackson,optional,Java,Kotlin,Jackson,Optional,我有以下课程: class X( val x: Optional<Optional<Int>> ) 为此: mapper.valueToTree(X(Optional.of(Optional.of(1)))) // -> {"x":1} mapper.valueToTree(X(Optional.of(Optional.empty()))) // -> {"x":null} mapper.valueToTree(X(Optional.empty())
class X(
val x: Optional<Optional<Int>>
)
为此:
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(可选的.of(可选的.empty())
有办法吗?您是否知道可选选项不应该是(de)可序列化?这似乎是可能的,但你为什么会得到它?
可选的
,至少在Java中,是用于方法的返回值,而不是用于字段。我完全不理解在任何事情上使用可选的
。你试过编写自己的序列化程序吗?
{"x":1} -> X(Optional.of(Optional.of(1)))
{"x":null} -> X(Optional.of(Optional.empty())
{} -> X(Optional.empty())