????????Map在日常開(kāi)發(fā)應(yīng)用中的頻率很高,最常用的實(shí)現(xiàn)類是HashMap和有序的TreeMap。在企業(yè)級(jí)應(yīng)用中,更多的應(yīng)用場(chǎng)景是關(guān)聯(lián)JSON和Object使用,Map可以用于JSON傳參、接收J(rèn)SON參數(shù),返回JSON數(shù)據(jù)等,也可以用于對(duì)象處理,開(kāi)發(fā)者可以省一些簡(jiǎn)單實(shí)體類,用map來(lái)替代。
????????接下來(lái)就提供Map與Object之間互相轉(zhuǎn)換的幾種方式:
Map轉(zhuǎn)Object
方式一:通過(guò)BeanMap轉(zhuǎn)
創(chuàng)建BeanMap并傳入待轉(zhuǎn)對(duì)象,直接把Map的值put到BeanMap中,就轉(zhuǎn)換成功了
public static Map<String,Object> initMap(){
Map<String,Object> map = new HashMap<>();
map.put("userId", 1L);
map.put("userName", "張三");
map.put("age", 18);
map.put("weight", 58.6);
return map;
}
public void mapToObj1(){
Map<String,Object> map = initMap();
User user = new User();
BeanMap beanMap = BeanMap.create(user);
beanMap.putAll(map);
System.out.println(user);
}
方式二:通過(guò)fastJson轉(zhuǎn)
先把map轉(zhuǎn)為json字符串,再把json字符串轉(zhuǎn)為對(duì)象
public void mapToObj2(){
Map<String,Object> map = initMap();
String s = JSON.toJSONString(map);
User user = JSON.parseObject(s, User.class);
System.out.println(user);
}
方式三:通過(guò)gson轉(zhuǎn)
先把map轉(zhuǎn)為json字符串,再把json字符串轉(zhuǎn)為對(duì)象
public void mapToObj3(){
Map<String,Object> map = initMap();
Gson gson = new Gson();
String s = gson.toJson(map);
User user = gson.fromJson(s, User.class);
System.out.println(user);
}
Object轉(zhuǎn)Map
方式一:通過(guò)BeanMap轉(zhuǎn)
實(shí)例化BeanMap的時(shí)候傳入對(duì)象,返回值就是Map
public static User initUser(){
User user = new User();
user.setUserId(2L);
user.setUserName("李四");
user.setAge(19);
user.setWeight(60.4);
return user;
}
public void objToMap1(){
User user = initUser();
BeanMap beanMap = BeanMap.create(user);
Map<String, Object> map = beanMap;
System.out.println(map);
}
方式二:通過(guò)fastJson轉(zhuǎn)
先把對(duì)象轉(zhuǎn)為json字符串,再把json字符串轉(zhuǎn)為泛型Map或HashMap
public void objToMap2(){
User user = initUser();
String s = JSON.toJSONString(user);
Map<String, Object> map = JSON.parseObject(s, new TypeReference<Map<String,Object>>(){});
//下面這種方式也可以轉(zhuǎn)
//Map<String, Object> map = JSON.parseObject(s, HashMap.class);
System.out.println(map);
}
方式三:通過(guò)gson轉(zhuǎn)(不推薦)
先把對(duì)象轉(zhuǎn)為json字符串,再把json字符串轉(zhuǎn)為HashMap
public void objToMap3(){
User user = initUser();
Gson gson = new Gson();
String s = gson.toJson(user);
Map<String, Object> map = gson.fromJson(s, HashMap.class);
System.out.println(map);
}
不推薦理由
????????如下圖,gson轉(zhuǎn)map的時(shí)候,會(huì)把int型或long型的整形數(shù)據(jù)全部轉(zhuǎn)換為double類型的浮點(diǎn)型,不能實(shí)現(xiàn)準(zhǔn)確轉(zhuǎn)換。只有數(shù)據(jù)類型全部為String時(shí)才可以放心使用!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-766183.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-766183.html
到了這里,關(guān)于Java中Map與對(duì)象之間互相轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!