jackson - 如果字段存在于树的更远位置,则不要序列化
问题描述
我的许多域对象都有一个unit
字段。目前,当我序列化时,每个对象都会输出该unit
字段:
{
"projects": [
{
"name": "project1",
"unit": "mm",
"size": {
"x": {
"value": 100,
"unit": "mm"
},
"y": {
"value": 120,
"unit": "mm"
},
"z": {
"value": 80,
"unit": "mm"
}
},
"materials": [
{
"type": "wood",
"unit": "mm",
"size": {
"x": {
"value": 100,
"unit": "mm"
},
"y": {
"value": 120,
"unit": "mm"
},
"z": {
"value": 80,
"unit": "mm"
}
}
},
...
]
},
...
]
}
我需要单个对象拥有该unit
属性,因为它们有时会自行序列化。例如
{
"length": {
"value": 100,
"unit": "mm"
}
}
但是当它嵌套在另一个已经指定 的对象中时unit
,会导致大量重复。
unit
如果在树的更远处的某个地方已经有一个unit
具有相同值的字段,我怎样才能让杰克逊省略该字段?
以下是我想使用相同实例实现的一些示例输出,但只是更改了序列化的根对象:
{
"projects": [
{
"name": "project1",
"unit": "mm",
"size": {
"x": {
"value": 100
},
"y": {
"value": 120
},
"z": {
"value": 80
}
},
"materials": [
{
"type": "wood",
"size": {
"x": {
"value": 100
},
"y": {
"value": 120
},
"z": {
"value": 80
}
}
},
...
]
},
...
]
}
{
"type": "wood",
"unit": "mm",
"size": {
"x": {
"value": 100
},
"y": {
"value": 120
},
"z": {
"value": 80
}
}
}
{
"value": 100,
"unit": "mm"
}
解决方案
AFAIK 你不能在解析器中添加这样的业务逻辑。您必须在映射器之前按摩数据类。
推荐阅读
- javascript - 在另一个类中添加一个或多个类的实例
- php - WP查询中的类别名称应动态出现
- javascript - 当我输出 p1.y 时,根据我的理解,我应该得到输出 201,因为 y 存储在人的原型中。为什么我得到200?
- ios - pdfKit目录中pdf的路径
- python - 如何将 dict 类型直接加载到 rdd
- php - MySQL 查询不正确
- python - 在使用 CreateView 保存表单之前做一些事情
- c# - 子类具有不同类型的共同属性的正确方法
- android - 第二次从firebase检索数据时出现问题
- c# - 如何从 json 或 c# 中的匿名对象更改密钥