ジャクソンを使用してJSONのポリモフィックな脱塩化を試みていますが、コンパイル時にサブクラスのリストが不明なので、ベースで@JsonSubtypeアノテーションを使用できませんクラス。 代わりに、TypeIdResolverクラスを使用してプロパティ値との変換を実行します。Jackon JSON:サブクラスが不明な場合の多態的な脱灰
私が遭遇する可能性のあるサブクラスのリストは動的ですが、それらはすべて実行時にレジストリに登録されます。だから私はそのレジストリクラスへの参照を持つために、TypeIdResolverオブジェクトが必要に見えるでしょう。本質的に依存性注入環境で動作する必要があります(つまり、TypeIdResolverが参照するシングルトンクラスを持つことはできません)。そのため、レジストリクラスをTypeIdResolverに注入する必要があります。私は考えるコードの種類私が書き込みをしたいです:
ObjectMapper mapper = new ObjectMapper();
mapper.something(new MyTypeIdResolver(subclassRegistry));
mapper.readValue(...)
しかし、私は途中でビットを行うための方法を見つけることができません。私が見つけることができる唯一のメソッドは、TypeIdResolverが何になるかを指定するためのJavaアノテーションを使用します。
この質問Is there a way to specify @JsonTypeIdResolver on mapper config instead of annotation?は同じですが、動機は異なりますが、答えはここでは動作しない注釈mixinを使用することです。