java - 杰克逊转换中无法识别的字段“类”
问题描述
我有一个包含子类数组的 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"
},
]
}
当我尝试使用 new ObjectMapper().readValue(s, Zoo.class) 将此 json 字符串转换回对象时,出现以下错误:
无法识别的字段“class”(com.test.Cat 类),未标记为可忽略
不确定如何配置映射器以将此字段识别为 Animal 的子类类型。我尝试使用 class ListofAnimals extends ArrayList { }; 但这也不起作用。
关于如何执行此转换的任何想法?
解决方案
推荐阅读
- javascript - 执行包含其他 3 个函数的函数时出现问题
- android - 如何访问活动内部/从活动中的片段视图组件
- reactjs - React Router 双重保护路由
- proxy - 需要构建一个代理来捕获应用程序之间的请求/响应(有约束)。我们是否在寻找正确的选择?
- java - Spring Boot Rest 端点返回 null 并带有 fetch 请求
- pug - 如何在自定义类中包含 pug 文件?
- raspberry-pi - 在树莓派 B+ 上启动时运行不和谐机器人
- python - 使用 rk4 将行星轨道显示为线性图
- python - 从字符串中获取N个字符,尊重完整的单词python
- python - 如果 Python 中的线图上有某个值,是否可以不绘制点?