2

私は Jackson 2.1.4 を使用しており、Event クラスを拡張するオブジェクトのコレクションをシリアライズしたいと考えており、JSON にはポリモーフィズムのためにクラス名を含める必要があります。Event に @JsonTypeInfo アノテーションを付けましたが、残念ながら CLASS を戦略として使用することはできません。これは、オブジェクトのインスタンス化パターンが「new FooEvent(){{bar=someValue;}}」であるため、匿名の内部クラスが作成されるためです。匿名の内部クラスではなく、JSON の型として「FooEvent」を入れたい。

私が必要としているのはこれを行うことのようです:

@JsonTypeInfo(use= JsonTypeInfo.Id.CUSTOM, include= JsonTypeInfo.As.PROPERTY, property="type")

しかし、クラスの名前を出力する独自のカスタム ID シリアライザーを登録するにはどうすればよいでしょうか?

4

1 に答える 1

2

これを解決する方法を理解しました。基本的に、@ JsonTypeInfoと同じクラスに@JsonTypeIdResolverアノテーションを追加してから、参照可能なリゾルバーを実装します。これが私のものです。基本的に、匿名の内部クラスが存在する場合はそれを削除します。

于 2013-03-22T09:46:55.140 に答える