我有這樣爲什麼左側忽視的類型 - 傑克遜deserialisation
class POJO {
Map<Integer, Integer> map;
//Getter and Setter for map here
}
一個POJO和我有一個JSON(POJO列表)
[
{
"200": 10
},
{
"20": 100,
"30": 400
}
]
在傑克遜反序列化,如果我做
String s = ... //s has the above json
List<POJO> pojoList = mapper.readValue(s, new TypeReference<List<POJO>>() {});
System.out.println(pojoList.get(0).getMap().get(20)); //prints 100
那麼就沒有問題
但是,如果使用泛型列表像
List<POJO> pojoList = mapper.readValue(s, List.class);
然後在System.out.println
它拋出ClassCastException
java.util.LinkedHashMap cannot be cast to mycode.model.POJO
我明白,如果我只是告訴傑克遜List
它反序列化的每個對象爲地圖,而不是作爲類型POJO。所以,當我嘗試訪問pojoList.get(0).getMap()
它拋出異常
(注:打印pojoList.get(0)
沒有給出問題並打印{"200":10}
)
我的問題是,爲什麼沒有把它反序列化本身期間拋出異常。 LHS上的對象類型是否被忽略?
謝謝..