Мои классы:
@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
поле