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)文章
java編寫簡(jiǎn)單的E-mail發(fā)送端程序
這篇文章主要介紹了使用java語(yǔ)言編寫一個(gè)簡(jiǎn)單的E-mail發(fā)送端程序,感興趣的小伙伴們可以參考一下2016-02-02Java中Object轉(zhuǎn)換為L(zhǎng)ist類型的實(shí)現(xiàn)方法
這篇文章主要介紹了Java中Object轉(zhuǎn)換為L(zhǎng)ist類型的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03SpringBoot校園綜合管理系統(tǒng)實(shí)現(xiàn)流程分步講解
這篇文章主要介紹了SpringBoot+Vue實(shí)現(xiàn)校園綜合管理系統(tǒng)流程分步講解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09JPA如何將查詢結(jié)果轉(zhuǎn)換為DTO對(duì)象
這篇文章主要介紹了JPA如何將查詢結(jié)果轉(zhuǎn)換為DTO對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Spring Cloud Ubuntu環(huán)境部署的步驟與注意事項(xiàng)
這篇文章主要給大家介紹了關(guān)于Spring Cloud Ubuntu環(huán)境部署的步驟與注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Cloud具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12IDEA在plugins里搜不到mybatisx插件的解決方法
本文主要介紹了IDEA在plugins里搜不到mybatisx插件的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06