Правильно десериализовать необязательный необязательный тип - PullRequest
0 голосов
/ 23 января 2020

У меня есть следующий класс:

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()) Есть ли способ сделать это?

...