yve*_*lem 6 java json annotations jackson
使用Jackson,可以轻松禁用给定的所有注释ObjectMapper
.有没有办法只禁用一个给定的注释?
// disable all
ObjectMapper mapper = new ObjectMapper()
mapper.disable(MapperFeature.USE_ANNOTATIONS);
// disable one?
ObjectMapper mapper = new ObjectMapper()
mapper.disable(@JsonIgnore);
Run Code Online (Sandbox Code Playgroud)
使用@JacksonAnnotationsInside
,我已经定义了一个自定义杰克逊注释,我只希望它在某些情况下使用.
这是我遇到过的最好的。我想我在杰克逊用户组论坛的某个地方看到过它。
本质上,它创建了一个自定义注释内省器,如果它发现它具有特定注释(在本例中为 JsonTypeInfo),则返回 null
JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() {
@Override
protected TypeResolverBuilder<?> _findTypeResolver(
MapperConfig<?> config, Annotated ann, JavaType baseType) {
if (!ann.hasAnnotation(JsonTypeInfo.class)) {
return super._findTypeResolver(config, ann, baseType);
}
return null;
}
};
mapper.setAnnotationIntrospector(ignoreJsonTypeInfoIntrospector);
Run Code Online (Sandbox Code Playgroud)