朋友们,
Jackson框架提供了基于注解的方法,在序列化过程中发出类型信息。
我不想在任何一个类中使用@JsonTypeInfo注解。
是否有任何替代上述注解的方法。
如果是,请尽可能提供示例来说明如何进行。
覆盖JacksonAnnotationIntrospector并使用您的Introspector在ObjectMapper中使用setAnnotationIntrospector。这里是您的AnnotationIntrospector的代码片段:
@Override
public TypeResolverBuilder<?> findTypeResolver(MapperConfig<?> config,
AnnotatedClass ac, JavaType baseType) {
if (Modifier.isAbstract(baseType.getRawClass().getModifiers())){
StdTypeResolverBuilder typeResolverBuilder = new StdTypeResolverBuilder();
typeResolverBuilder.typeProperty("@class");
typeResolverBuilder.inclusion(As.PROPERTY);
typeResolverBuilder.init(Id.CLASS, null);
return typeResolverBuilder;
}
return super.findTypeResolver(config, ac, baseType);
}
typeResolverBuilder.typeProperty("@class"); typeResolverBuilder.inclusion(As.PROPERTY);
之前,应该先执行typeResolverBuilder.init(Id.CLASS, null);
,否则它将无法正常工作。 - Niraj NawanitbaseType.isAbstract()
替换了Modifier.isAbstract(baseType.getRawClass().getModifiers())
,它确实完成了任务。谢谢! - A. Rodas