首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectMapper避免注释

ObjectMapper避免注释
EN

Stack Overflow用户
提问于 2017-09-09 10:44:55
回答 1查看 305关注 0票数 0

我有这样的注释:

代码语言:javascript
复制
    @Valid
@NotNull
@JsonTypeResolver(com.rsqtechnologies.sioms.shared.JsonTypeResolver.class)
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "type",
        visible = true)
@JsonSubTypes({
        @JsonSubTypes.Type(value = HandballPlayerTO.class, name = "handballPlayerTO"),
        @JsonSubTypes.Type(value = FootballPlayerTO.class, name = "footballPlayerTO")
})

并希望在使用objectMapper时避免@JsonTypeResolver。

我试过这个:

代码语言:javascript
复制
   ObjectMapper mapper = new ObjectMapper();
    JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() {
        @Override
        protected TypeResolverBuilder<?> _findTypeResolver(
                MapperConfig<?> config, Annotated ann, JavaType baseType) {
            if (!ann.hasAnnotation(JsonTypeResolver.class)) {
                return super._findTypeResolver(config, ann, baseType);
            }
            return null;
        }
    };
    mapper.setAnnotationIntrospector(ignoreJsonTypeInfoIntrospector);

但正如我注意到的,它移除了所有出现在旁边的注释。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-09 13:59:53

_findTypeResolver方法处理@JsonTypeResolver、@JsonTypeInfo和@JsonTypeIdResolver。通过重写此方法,可以防止Jackson处理所有这些方法。而不是覆盖_findTypeResolver,而是重写_findAnnotation,这样杰克逊仍然可以看到其他的。

代码语言:javascript
复制
JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() {
    protected <A extends Annotation> A _findAnnotation(Annotated annotated, Class<A> annoClass) {
        return JsonTypeResolver.class == annoClass ? null : annotated.getAnnotation(annoClass);
    }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46129821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档