次のような JSON ファイルがあるとします。
{
"response" : [
{
"id" : "10",
"period" : "month",
"values" : [
{
"value" : 100,
"date" : "2013-05-10"
}
],
"parent" : "1"
},
{
"id" : "10",
"period" : "day",
"values" : [
{
"value" : {
"foo" : 10,
"bar" : 11,
"etc" : 4
},
"date" : "2013-05-10"
}
],
"parent" : "1"
},{
"id" : "13",
"period" : "year",
"values" : [
{
"value" : {
"info" : 1,
"pages" : 10,
"etc" : 4
},
"date" : "2013-05-10"
}
],
"parent" : "1"
}
]
}
「値」部分は、単一の値またはオブジェクト (一意) のいずれかであることに注意してください。
Jackson ObjectMapper を使用して、これを POJO に簡単にマップしたいと考えています。
私がこれまでに持っているもの:
public class Response
{
List<ResponseEntry> response;
/*getters + setters */
public static class ResponseEntry
{
private String id;
private String period;
private String parent;
private List<Value> values;
/*setters + getters*/
public static class Value
{
private Object value;
private String date;
/*setters+getters*/
}
}
}
応答をマップするには、必要なファイルを指定し、ObjectMapper に「応答」クラスにマップするように指示するだけです
ObjectMapper mapper = new ObjectMapper();
Response r = mapper.readValues(json, Response.class);
これは機能しますが、「値」を保持するために「オブジェクト」を使用するよりも良い方法はありますか? 「値」は単一の値でもオブジェクトでもかまいません。これを処理するポリモーフィックな方法があると確信していますが、調べたところ、機能するものは見つかりませんでした。私はかなり立ち往生しており、助けていただければ幸いです。