【问题标题】:Jackson serialization ignore field annoted with non jackson annotation杰克逊序列化忽略使用非杰克逊注释注释的字段
【发布时间】:2015-05-18 20:48:28
【问题描述】:

有没有办法告诉杰克逊在序列化期间忽略带有非杰克逊注释的字段?

例如:

@SomeAnnotation
private String foo;

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

【问题讨论】:

    标签: java json annotations jackson


    【解决方案1】:

    我鼓励您只使用 @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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-07
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多