4
說我有一個JSON文件看起來像這樣:傑克遜 - 處理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);
這工作,但是有沒有比用'對象'來保存'值'更好的方法?由於'價值'可以是單一的價值或對象,我有點困難搞清楚它應該是什麼。我確定有一種多態的方式來處理這個問題,但是我看了也找不到任何有用的東西。我很堅持,我會很感激任何幫助。
其實你可以使用'JsonDeserializer'。看看這裏如何實現:http://stackoverflow.com/questions/13891415/deserializing-json-with-multiple-types-in-one-field – Andremoniy