Десериализация вложенных полиморфных полей - PullRequest
1 голос
/ 02 июля 2019

Можно ли десериализовать следующий JSON

{
  "operation": "create", // type discriminator
  "value": "some text",
  "source": {
    "name": "source name",
    "kind": "db" // type discriminator
  }
}

для следующего набора классов

sealed trait Source

case class DbSource(name: String) extends Source

sealed trait Operation

case class CreateOperation(value: String, source: Source) extends Operation

, используя Json4s, не прибегая к пользовательским десериализаторам?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

не знаю о json4s, вы можете сделать это с Джексоном, хотя: https://www.baeldung.com/jackson-inheritance

0 голосов
/ 02 июля 2019

Библиотека Json Circe предлагает именно то, что вы ищете: Соответствующую страницу

implicit val sourceConfig: Configuration =
  Configuration.default.withDiscriminator("operation")
...