首页 文章

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

提问于
浏览
2

有没有办法告诉 Jackson 在序列化过程中忽略用非 Jackson 注释注释的字段?

例如 :

@SomeAnnotation
private String foo;

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

1 回答

  • 6

    我鼓励你只使用 @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;
        }
    }
    

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

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

相关问题