【发布时间】:2015-05-18 20:48:28
【问题描述】:
有没有办法告诉杰克逊在序列化期间忽略带有非杰克逊注释的字段?
例如:
@SomeAnnotation
private String foo;
我知道有 jackson 注释可以做到这一点,但我的字段已经用我的持久性注释进行了注释,所以我想避免重复,因为我已经有带有我想忽略的注释的字段
【问题讨论】:
标签: java json annotations jackson
有没有办法告诉杰克逊在序列化期间忽略带有非杰克逊注释的字段?
例如:
@SomeAnnotation
private String foo;
我知道有 jackson 注释可以做到这一点,但我的字段已经用我的持久性注释进行了注释,所以我想避免重复,因为我已经有带有我想忽略的注释的字段
【问题讨论】:
标签: java json annotations 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());
【讨论】: