我有一个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"
},
]
}
当我尝试使用新的ObjectMapper()。readValue(s,Zoo.class)将此json字符串转换回对象时,出现以下错误:
无法识别的字段“类”(com.test.Cat类),未标记为可忽略
不确定如何配置映射器以将该字段识别为Animal的子类类型。我尝试使用类ListofAnimals扩展了ArrayList {};但这也不起作用。
关于如何执行此转换的任何想法?