java - 没有类型信息的杰克逊多态反序列化
问题描述
我有代表对象类型特殊情况的 json 对象:
interface X {
Map<String, Object> extraInfo;
}
子类如下:
class Y implements X {
String foo;
}
class Z implements X {
String bar;
}
基本上,子类是根据 json 对象中的属性名称 foo 和 bar 来区分的。如何配置杰克逊以反序列化这些对象?
我尝试了以下方法,但它不起作用:
@JsonSubTypes({@JsonSubTypes.Type(value = Y.class),
@JsonSubTypes.Type(value = Z.class)})
interface X {
Map<String, Object> extraInfo;
}
@Getter
class Y implements X {
public Y(@JsonProperty(value="foo") String foo) {
this.foo = foo;
}
String foo;
}
@Getter
class Z implements X {
public Z(@JsonProperty(value="bar") String bar) {
this.bar = bar;
}
String bar;
}
有人可以指出我在这里缺少什么吗?
解决方案
推荐阅读
- roles - BigCommerce:识别登录用户角色
- node.js - 如何等待带有异步请求的 for 循环在 node.js 中完成?
- c# - PHP 和 C# 不同的 Unicode 输出
- ms-access - 更新/更改 ms 访问字段中文件的路径
- java - Jenkins Sonar 插件如何与 SonarQube 集成?
- ibm-cloud-storage - 更新 COS 中已有的 Object
- javascript - 带有jquery表的Javascript Click函数
- python - 英特尔 Distribution for Python 上的 pipenv 环境
- fpga - 指导 Vivado HLS 指令编辑器利用自定义 IP 实现各种功能
- google-cloud-platform - 我们可以通过使用云发布/订阅为同一主题创建不同的订阅来接收多个用户的 gmail 推送通知吗