欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Map與對(duì)象之間互相轉(zhuǎn)換的幾種常用方式

 更新時(shí)間:2024年01月26日 15:42:23   作者:Jon?Young  
在Java中將對(duì)象和Map相互轉(zhuǎn)換是常見的操作,可以通過(guò)不同的方式實(shí)現(xiàn)這種轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于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迭代器與Collection接口超詳細(xì)講解

    Java迭代器與Collection接口超詳細(xì)講解

    Collection也稱集合,集合概述:集合是Java中提供的一種容器,可以用來(lái)存儲(chǔ)多個(gè)數(shù)據(jù)。Iterator(迭代器)不是一個(gè)集合,它是一種用于訪問(wèn)集合的方法,可用于迭代 ArrayList 和 HashSet 等集合
    2022-07-07
  • java編寫簡(jiǎn)單的E-mail發(fā)送端程序

    java編寫簡(jiǎn)單的E-mail發(fā)送端程序

    這篇文章主要介紹了使用java語(yǔ)言編寫一個(gè)簡(jiǎn)單的E-mail發(fā)送端程序,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java多線程中的Phaser詳解

    Java多線程中的Phaser詳解

    這篇文章主要介紹了Java多線程中的Phaser詳解,Pahser是一個(gè)可以重復(fù)使用的同步屏障,Phaser是按照不同階段執(zhí)行線程的,它本身維護(hù)著一個(gè)叫 phase 的成員變量代表當(dāng)前執(zhí)行的階段,需要的朋友可以參考下
    2023-11-11
  • Java中Object轉(zhuǎn)換為L(zhǎng)ist類型的實(shí)現(xiàn)方法

    Java中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-03
  • SpringBoot校園綜合管理系統(tǒng)實(shí)現(xiàn)流程分步講解

    SpringBoot校園綜合管理系統(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-09
  • JPA如何將查詢結(jié)果轉(zhuǎn)換為DTO對(duì)象

    JPA如何將查詢結(jié)果轉(zhuǎn)換為DTO對(duì)象

    這篇文章主要介紹了JPA如何將查詢結(jié)果轉(zhuǎn)換為DTO對(duì)象,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Spring Cloud Ubuntu環(huán)境部署的步驟與注意事項(xiàng)

    Spring 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-12
  • java  中MyBatis注解映射的實(shí)例詳解

    java 中MyBatis注解映射的實(shí)例詳解

    這篇文章主要介紹了java 中MyBatis注解映射的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • IDEA在plugins里搜不到mybatisx插件的解決方法

    IDEA在plugins里搜不到mybatisx插件的解決方法

    本文主要介紹了IDEA在plugins里搜不到mybatisx插件的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 分布式Netty源碼分析概覽

    分布式Netty源碼分析概覽

    這篇文章主要為大家介紹了分布式Netty源碼分析概覽,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03

最新評(píng)論