Java中Map與對(duì)象之間互相轉(zhuǎn)換的幾種常用方式
前言
Map在日常開發(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ì)象處理,開發(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í)才可以放心使用!

總結(jié)
到此這篇關(guān)于Java中Map與對(duì)象之間互相轉(zhuǎn)換的幾種常用方式的文章就介紹到這了,更多相關(guān)Java Map與對(duì)象互相轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot集成SpirePDF實(shí)現(xiàn)文本替換功能
SpirePDF是一個(gè)用于.NET平臺(tái)的高級(jí)PDF文檔處理庫(kù),它提供了一套完整的API,允許開發(fā)者創(chuàng)建、編輯、轉(zhuǎn)換、合并、分割和解析PDF文件本文給大家介紹了SpringBoot集成SpirePDF實(shí)現(xiàn)文本替換功能,需要的朋友可以參考下2024-09-09
SpringBoot整合Drools規(guī)則引擎動(dòng)態(tài)生成業(yè)務(wù)規(guī)則的實(shí)現(xiàn)
本文主要介紹了SpringBoot整合Drools規(guī)則引擎動(dòng)態(tài)生成業(yè)務(wù)規(guī)則的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Java代碼實(shí)現(xiàn)簡(jiǎn)單酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java代碼實(shí)現(xiàn)簡(jiǎn)單酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
SpringBoot文件上傳(本地存儲(chǔ))回顯前端操作方法
這篇文章主要介紹了SpringBoot文件上傳(本地存儲(chǔ))回顯前端操作方法的相關(guān)資料,文中講解了文件上傳的基本原理,包括前端調(diào)用后端接口上傳文件,后端返回文件路徑給前端,前端通過(guò)路徑訪問(wèn)圖片,需要的朋友可以參考下2024-11-11

