У меня есть класс Java, который содержит массив подклассов как таковой:
@com.fasterxml.jackson.annotation.JsonTypeInfo(use = com.fasterxml.jackson.annotation.JsonTypeInfo.Id.CLASS, include = com.fasterxml.jackson.annotation.JsonTypeInfo.As.PROPERTY, property = "class", visible = true)
public class Zoo {
Date stamp=new Date();
public Date getStamp() {
return stamp;
}
public void setStamp(Date stamp) {
this.stamp = stamp;
}
List<Animal> animals;
public List<Animal> getAnimals() {
return animals;
}
public void setAnimals(List<Animal> animals) {
this.animals = animals;
}
}
Когда я создаю экземпляр этого класса с несколькими типами животных и преобразовываю его с помощью нового ObjectMapper () Джексона. WriteValueAsString (zoo), Я получаю следующую строку:
{
"stamp": 1556129201484,
"animals": [
{
"class": "com.test.Cat",
"title": "Tom"
},
{
"class": "com.test.Dog",
"title": "Jerry"
},
]
}
Когда я пытаюсь преобразовать эту строку json обратно в объект, используя: new ObjectMapper (). ReadValue (s, Zoo.class), я получаю следующую ошибку:
Нераспознанное поле "класс" (класс com.test.Cat), не помеченное как игнорируемое
Не уверен, как настроить маппер для распознавания этого поля как типа подкласса Animal,Я пытался с помощью класса ListofAnimals extends ArrayList {};но это тоже не сработало.
Есть идеи, как выполнить это преобразование?