有没有办法告诉 Jackson 在序列化过程中忽略用非 Jackson 注释注释的字段?
例如 :
@SomeAnnotation private String foo;
我知道有 Jackson 注释可以做到这一点,但是我的字段已经用我的持久性注释注释了,所以我想避免重复,因为我已经有了带有注释的字段我想忽略
我鼓励你只使用 @JsonIgnore ,否则你会继续使用这些特定方法和双用途注释 .
@JsonIgnore
但是......您可以通过扩展 JacksonAnnotationIntrospector 并覆盖 _isIgnorable(Annotated) 来完成此操作:
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());
1 回答
我鼓励你只使用
@JsonIgnore
,否则你会继续使用这些特定方法和双用途注释 .但是......您可以通过扩展
JacksonAnnotationIntrospector
并覆盖_isIgnorable(Annotated)
来完成此操作:然后在对象映射器上设置注释introspector: