Jackson Don';如果在树的更上层存在字段,则不序列化字段

Jackson Don';如果在树的更上层存在字段,则不序列化字段,jackson,Jackson,很多my domain对象都有一个单元字段。当前,当我序列化时,每个对象都输出单元字段: { "projects": [ { "name": "project1", "unit": "mm", "size": { "x": { "value": 100,

很多my domain对象都有一个
单元
字段。当前,当我序列化时,每个对象都输出
单元
字段:

{
  "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
属性,因为它们有时是自己序列化的。e、 g

{
  "length": {
    "value": 100,
    "unit": "mm"
  }
}
但是当它嵌套在另一个已经指定了
单元的对象中时,会导致大量的重复

如果在树的更高位置已经有一个
unit
字段具有相同的值,我如何让jackson省略
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"
}