Scala запечатлелась в сериализации JSON - PullRequest
0 голосов
/ 06 июня 2018

У меня есть следующие типы scala:

case class Wrapper(v: Type)
sealed trait Type
case object TypeA extends Type
case object Typeb extends Type

Я хочу сериализовать и десериализовать Wrapper, используя jackson со следующим кодом:

val mapper: ObjectMapper = new ObjectMapper
mapper.registerModule(DefaultScalaModule)

val src = Wrapper(TypeA)
val txt = mapper.writeValueAsString(src)
val dst: Wrapper = mapper.readValue(txt, classOf[Wrapper])

К сожалению, этот код не 'не работает, потому что txt это "{"v":{}}".

Как правильно сериализовать / десериализовать его?

Если jackson не может это сделать, есть ли другая библиотека?

1 Ответ

0 голосов
/ 06 июня 2018

Я обнаружил, что единственный возможный способ сделать это - пользовательский серализатор и десерализатор.

Вы должны реализовать JsonSerializer и JsonDeserializer для запечатанной черты и пометить вашу черту @JsonSerialize и * 1006.*.

Или вы можете зарегистрировать serealizer и deserializer в ObjectMapper.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...