如何忽略 parent class 中的嵌套字段?

How to ignore nested fields from parent class?

我有一个带有 child 属性 的 JSON 模型,其中有很多我想忽略的字段。例如

{
    "id": 1,
    "preference": {
        "subproperty1": "dummy",
        "subproperty2": "dummy",
        "subproperty3": "dummy",
        ...
        "subproperty40": "dummy",
    },
    "property1": "dummy",
    "property2": "dummy",
    ...
    "property30": "dummy",
}

我预期的反序列化结果看起来像

{
    "id": 1,
    "preference": {
        "subproperty1": "dummy",
        "subproperty2": "dummy",
    },
    "property1": "dummy",
    "property2": "dummy"
}

意思是我想忽略当前和嵌套 class 中的很多字段,我知道有一个 @JsonIgnoreProperties 可以使用,例如

@JsonIgnoreProperties({"name", "property3", "property4", ..., "property30"})
@JsonSerialize(include = JsonSerialize.Inclusion.NON_EMPTY)
protected static class MixInMyClass {

}
...
objectMapper.getDeserializationConfig().addMixInAnnotations(MyClass.class, MixInMyClass.class);
  1. 据我所知没有。您还需要将 @JsonIgnoreProperties 放置在嵌套的 类 中。
  2. 查看 [[=​​22=] 观看次数][1]。有了它,您就可以知道每个视图中要包含哪些属性。您可以查看 1 次:
public class Views {
    public static class Public {
    }
}

然后在您的模型中,您需要用 @JsonView(Views.Public.class) 注释您希望可用的属性。 最后,在您的端点中,您将使用 @JsonView(Views.Public.class).

您可以通过注释 @JsonIgnoreProperties(ignoreUnknown = true).

来简单地解决这个问题

这是一个例子,

@JsonIgnoreProperties(ignoreUnknown = true)
class YouMainClass {
    private Integer id;
    private Preference preference;
    private String property1;
    private String property2;

    // getters & setters
}

@JsonIgnoreProperties(ignoreUnknown = true)
class Preference {
    private String property1;
    private String property2;

    // getters & setters
}

使用此 YouMainClass 反序列化 JSON。反序列化时将忽略所有 unknow/unwanted 属性。