次のような JSON 構造があります。
[
{
"id": 0,
"name": "Foo"
},
{
"id": 1,
"name": "Bar"
}
]
およびデータ バインディング用の対応する Java オブジェクト:
public class Thing {
public int id;
public String name;
}
JSON リストを のリストに逆シリアル化する方法を知っていますThing
。
ここでトリッキーな部分が来ます: 私がやりたいことは、このクラスに変更を加えることだけで、次のスニペットのように見えるクラスに JSON をデシリアライズすることです:
public class Things {
private List<Thing> things;
public void setThings(List<Thing> things) {
this.things = things;
}
public List<Thing> getThings() {
return this.things;
}
}
これは、次のように ObjectMapper を使用して、JSON デシリアライゼーションがアプリケーションの奥深くに組み込まれているためです。
private static <T> T parseJson(Object source, Class<T> t) {
TypeReference<T> ref = new TypeReference<T>() {
};
TypeFactory tf = TypeFactory.defaultInstance();
//[...]
obj = mapper.readValue((String) source, tf.constructType(ref));
//[...]
return obj;
}
私が望むものを達成できる注釈はありますか、それともマッパーコードを変更する必要がありますか?
前もって感謝します、マクファーレン