ObjectMapper避免注释

时间:2017-09-09 10:44:55

标签: java json annotations jackson objectmapper

我有这样的注释:

N

想在使用objectMapper时避免使用@JsonTypeResolver。

我试过这个:

    @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")
})

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

1 个答案:

答案 0 :(得分:0)

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

JacksonAnnotationIntrospector ignoreJsonTypeInfoIntrospector = new JacksonAnnotationIntrospector() {
    protected <A extends Annotation> A _findAnnotation(Annotated annotated, Class<A> annoClass) {
        return JsonTypeResolver.class == annoClass ? null : annotated.getAnnotation(annoClass);
    }
};