Десериализованный вложенный полиморфный JSON с Джексоном с помощью Scala - как передать вложенное поле в Classconstructor - PullRequest
0 голосов
/ 01 ноября 2019

Мои классы:

@JsonTypeInfo(use = Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "animal_type")
@JsonSubTypes(
  Array(new Type(value = classOf[Dog], name = "dog"),
        new Type(value = classOf[Cat], name = "cat"))
abstract class Animal {}

class Dog (leash: String, colour: String) extends Animal {
}

class Cat (collar: String) extends Animal {
}

Чтение так:

val animals: Array[Animal] = JsonUtils.mapper.readValue(animalsJson, classOf[Array[Animal]])

Но у меня проблемы, потому что моя строка json выглядит следующим образом:

{
    "animal_type": "cat",
    "animal_id": 1,
    "animal_definition": 
    {
       "collar": "Lucy"    
    }
}

Если бы это было так, то все было бы хорошо:

{
    "animal_type": "cat",
    "animal_id": 1,
    "collar": "Lucy"
}

Могу ли я указать Джексону, какое поле передать конструктору? Т.е. я хочу перейти в animal_definition поле

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