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

いくつかの代替案:

  • 値クラスの変更を必要としないmix-in アノテーションを使用する
  • JacksonAnnotationIntrospectorいつ、どのように同等の型情報を使用する必要があるかを決定する独自のロジックをオーバーライドして実装します。
于 2012-09-06T20:13:53.433 に答える