4

朋友们,

Jackson 框架提供了基于注解的方法来在序列化过程中发出类型信息。

我不想在我的任何课程中使用@JsonTypeInfo注释。

上述注释是否有任何替代方案。

如果是,请在可能的情况下提供执行相同操作的示例。

4

2 回答 2

3

覆盖 JacksonAnnotationIntrospector 并使用 setAnnotationIntrospector 在 ObjectMapper 中使用 Introspector。这是您的 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);
}
于 2015-03-21T21:55:11.053 回答
2

几个选择:

  • 使用不需要修改值类的混合注释
  • 覆盖JacksonAnnotationIntrospector并实现您自己的逻辑,以确定何时以及如何使用等效类型信息。
于 2012-09-06T20:13:53.433 回答