在開發(fā)過程中,常常會(huì)使用JSON格式的數(shù)據(jù)進(jìn)行交互,而Java中的HashMap也是一個(gè)很常見的容器類。然而,在使用HashMap解析JSON時(shí),有時(shí)會(huì)出現(xiàn)一些莫名其妙的問題。
比如,當(dāng)我們使用以下代碼接收一個(gè)JSON字符串時(shí):
String jsonStr = "{\"name\":\"Alice\",\"age\":18}"; HashMap<String, Object> hashMap = new HashMap<>(); hashMap = new ObjectMapper().readValue(jsonStr, HashMap.class);
我們會(huì)發(fā)現(xiàn)此時(shí)hashMap中存儲(chǔ)的數(shù)據(jù)為空值,而不是我們期望的{"name": "Alice", "age": 18}。
這是因?yàn)镠ashMap在接收J(rèn)SON數(shù)據(jù)時(shí),會(huì)忽略其中的類型信息。因此,我們需要使用泛型來明確HashMap中存儲(chǔ)數(shù)據(jù)的類型:
String jsonStr = "{\"name\":\"Alice\",\"age\":18}"; HashMap<String, Object> hashMap = new HashMap<>(); hashMap = new ObjectMapper().readValue(jsonStr, new TypeReference<HashMap<String, Object>>(){});
使用泛型后,我們就可以成功地將JSON數(shù)據(jù)存入HashMap中了。