Аннотируйте ваш базовый класс A
с информацией о типе, которая сообщает Джексону, как решить, следует ли десериализовать данный объект json в B.java
или C.java
.
Пример. С помощью приведенного ниже кода мыговорят Джексону, что объект json для A.class будет содержать свойство с ключом type
, значение которого может быть "b" или "c".Если значение равно «b», десериализуйте объект до B.class
, иначе десериализуйте его до C.class
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
@Type(value = B.class, name = "b"),
@Type(value = B.class, name= "c")
})
class A {
}
Ниже приведен json, который вы должны использовать.
{
"a" : { // This will be deserialized to B.class
"type": "b",
// field of B.class
}
}
{
"a" : { // This will be deserialized to C.class
"type": "c",
// field of C.class
}
}