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());
有没有办法告诉 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());