java - 为什么杰克逊将超类序列化为单独的对象?
问题描述
假设我有以下 Cassandra 实体。
@Entity
class Person {
private String name;
// getter and setter
}
@Entity
class Job {
private String title;
// getter and setter
}
class PersonWrapper extends Person {
private Job job;
// getter and setter
}
API 提供:
{
"name": "rick",
"job": {
"title": "programmer"
},
"person": {
"name": "rick",
"job": {
"title": "programmer"
}
}
}
我的临时解决方案是在包装类上使用JsonIgnoreProperties 。有没有办法消除重复对象?
解决方案
Jackson 将 JSON 的字段映射到 Java 对象中的相等字段,方法是匹配 JSON 字段的名称和您的类中没有“get”和“set”的字段(您的序列化类中必须有 getter 和 setter)。在您的示例中,您需要创建这样的类:
@Getter
@Setter
class CommonClass {
String name;
Job job;
Person person;
}
@Getter
@Setter
class Job {
String title;
}
@Getter
@Setter
class Person {
String name;
Job job;
}
推荐阅读
- python - 如何打印列表中第二个单词的第一个字母?
- docker - 在 Github Actions 上从 package.json 安装私有 github 包
- javascript - jQuery选择字符串上的第二个元素
- python - 迭代地平均特定列表元素?
- python-3.x - 为什么这个函数被认为是队列的实现?
- javascript - 对 JavaScript 数组中的相同值进行分组
- axapta - Dynamics 365 FO 数据实体:临时表为空
- intel - 如何从 MPSS 4.4.1 修复 modprobe 错误
- reactjs - 懒惰渲染孩子
- batch-file - How to output multiple lines from a FINDSTR to a variable