Jackson 序列化忽略用非 jackson 注释注释的字段

Jackson serialization ignore field annoted with non jackson annotation

有没有办法告诉 Jackson 在序列化期间忽略那些用非 jackson 注释注释的字段?

例如:

@SomeAnnotation
private String foo;

我知道有 jackson 注释可以做到这一点,但是我的字段已经用我的持久性注释进行了注释,所以我想避免重复,因为我已经有带有我想忽略的注释的字段

我鼓励您只使用 @JsonIgnore,因为否则您将隐藏那些特定方法和双重用途注释正在发生的事情。

但是...您可以通过扩展 JacksonAnnotationIntrospector 并覆盖 _isIgnorable(Annotated) 来完成此操作,如下所示:

publi class MyAnnotationIntrospector extends JacksonAnnotationIntrospector {
    @Override
    protected boolean _isIgnorable(Annotated a) {
        boolean isIgnorable = super._isIgnorable(a);
        if (!isIgnorable) {
            SomeAnnotation ann = a.getAnnotation(SomeAnnotation.class);
            isIgnorable = ann != null;
        }
        return isIgnorable;
    }
}

然后在对象映射器上设置注释内省器:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setAnnotationIntrospector(new MyAnnotationIntrospector());