JAXBでXmlTypeAdaptersを使用してマッピングする方法については、多くの例があります。JAXBでのオブジェクト型のマッピング方法
しかし、私の状況はどのタイプでも可能なフィールドです(つまりJavaのObject.class)。私が望むのは、基本的には、そのフィールドのマーシャリング/アンマーシャリングのためのすべてのコントロールを私に渡すアダプタを使用することです。ここでも、私は着信タイプを知らないし、実行時以外の発信タイプも知らない。例えば
:
@XmlRootElement(name="myType")
@XmlAccessorType(XmlAccessType.FIELD)
class MyType {
@XmlElement("value")
@XmlJavaTypeAdapter(ValueAdapter.class)
private Object value;
public static class ValueAdapter extends XmlAdapter<Object, Object> {
public ValueAdapter() {
}
public Object marshal(Object value) {
if (value instanceof Date) {
// do date stuff
}
else if (value instanceof Foo) {
// do foo stuff
}
// ... etc ...
else {
return value;
}
}
public Object unmarshal(Object value) {
if (value instanceof Date) {
// do date stuff
}
else if (value instanceof Foo) {
// do foo stuff
}
// ... etc ...
else {
return value;
}
}
}
// getter/setter fluff ...
}
しかし、ジャクソンを使用して、ValueAdapterが呼び出されません。
これはJAXBでこれを行う正しい方法ですか?そうでない場合、これを行う方法は何ですか?
Gaaah! +1ポンドポイント。私はアダプタでブレークポイントに達するのを見ていませんでした。私のIDEで私のプロジェクトを掃除した後、ブレークポイントは期待通りにヒットし、上記の解決策が働きます。私はこれが誰かを助けることを望む。 – Caleb