当布尔属性为 false 时,如何设置 jackson 以忽略它?

Арт*_*хин 4 java jackson

我使用 Jackson, ObjectMapper.readValue(json, Class)。

上一堂课:

Component {
  private String name;
  private String someField;
  private boolean show = true; // if false -> skip it object
}
Run Code Online (Sandbox Code Playgroud)

和可扩展类:

ExtendedComponent extends Component {
  private List<Component> components = emptyList();// if all of object in list not showed -> skip field
}
Run Code Online (Sandbox Code Playgroud)

和复杂类:

ComplexComponent extends Component {
      ExtendedComponent component;
    }
Run Code Online (Sandbox Code Playgroud)

和json:

{
  "complexComponent": {
    "name": "complexName1",
    "show": true,
    "someField": "complex",
    "extendedComponent": {
      "components": [
        {
          "name": "someName1",
          "show": true,
          "someField": "someField"
        },
        {
          "name": "someName2",
          "show": false,
          "someField": "someField"
        },
        {
          "name": "someName3",
          "show": true,
          "someField": "someField"
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何在 ExtendedComponent 中仅获取名称为 someName1 和 someName3 的对象?

如果未显示所有组件,如何获得可为空的 ComplexComponent?

Tom*_*olk 7

取决于您的 jackson 2 版本

@JsonInclude(Include.NON_DEFAULT)
Run Code Online (Sandbox Code Playgroud)

或者

@JsonInclude(Include.NON_EMPTY)
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩。