java - 杰克逊总是试图实例化一个抽象基类
问题描述
我正在尝试使用 Jackson 和@JsonTypeInfo
.
我有以下类,但杰克逊总是试图实例化抽象基类通信,因此失败。
public class PartnerCommunication {
private String addressType;
@Embedded
@JsonTypeInfo(
use=JsonTypeInfo.Id.NAME,
include= JsonTypeInfo.As.EXTERNAL_PROPERTY,
property="addressType"
)
@JsonSubTypes({
@JsonSubTypes.Type(value=Address.class, name="Address"),
@JsonSubTypes.Type(value=Telephone.class, name="Telephone")
})
private Communication communication;
}
public abstract class Communication {
}
public class Telephone extends Communication {
private String phone;
}
public class Address extends Communication {
private String street;
}
我试图反序列化的 json 看起来像这样。
{
"addressType": "Address",
"communication": {
"street": "My street"
}
}
如果我拼错了类型,Jackson 会返回一个错误,说唯一有效的类型是地址和电话。所以它确实理解了这个提示,但显然没有完全遵循它。我错过了一些配置吗?
解决方案
在我更新了我的 Spring Boot 设置后,它似乎工作了。我现在正在使用2.3.1.RELEASE
初学者父母。
推荐阅读
- powershell - 将powershell屏幕输出导出为图像
- linux - AWK 如何修改此代码,使其打印 num 个实例而不是 0 和 1
- python - 所有这些 python* 可执行文件是怎么回事?
- google-chrome - 带有 Selenium 的无头 Chrome 无法正确加载网页元素
- sql - 根据不同的分组条件计算总计
- excel - 将具有实际数据范围的所有工作表复制到新工作簿中,同时保留旧工作表名称
- javascript - 如何在 angular-material-table 中创建表单数组
- python - 如何在运行时使用python设置保存文件的路径?
- excel - 根据年份创建包含工作日和每月日期的表
- maven - java.lang.Exception:没有找到匹配 JUNIT 4 和 SpringBoot 的测试