11

現在、Jackson 1.4.2 を使用しcodeており、UI から Java コントローラー (サーブレット) に戻される値 (型情報の一意の識別子) の逆シリアル化を試みています。

複数の型 (ABCTypeなどXYZType) がすべて から拡張されてAbstractTypeいますが、それぞれの具体的な型には、単一のパラメーターとして一意の識別子を取り、型オブジェクト (名前、関連付けられた型、説明、有効な頭字語など) その識別子によって表されます。各具象型 (例: XYZType) 内の静的メソッドには、次の注釈が付けられ@JsonCreatorます。

@JsonCreator
public static XYZType getInstance(String code) {
    .....
}

私が見ている問題は、Jackson のマッパーが json をこれらの型に逆シリアル化しようとして例外をスローすることです。

原因: org.codehaus.jackson.map.JsonMappingException: 型 [単純型、クラス com.company.type.XYZtype] のデフォルト コンストラクターが見つかりません: Json オブジェクトからインスタンス化できません。

静的ファクトリ メソッドへの注釈について、ここで何が欠けています@JsonCreatorか (または、Jackson 1.4.2 が から拡張された具体的な型に苦労しているためAbstractTypeですか?)?

4

2 に答える 2

5

問題は、Jackson が宣言された基本型しか見ておらず、サブタイプを探す場所がわからないことです。完全なポリモーフィック型の処理が 1.5 で追加されたため、1.4 で行う必要があるのは、基本クラスにファクトリ メソッドを追加し、そこからメソッドをディスパッチすることです。

于 2010-06-28T22:55:42.600 に答える