最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java對象和Map之間相互轉換的五種方法

 更新時間:2025年02月12日 10:43:46   作者:hhzz  
在Java開發(fā)中,經(jīng)常需要將Java對象轉換成Map,或者反過來將Map轉換成Java對象,這種轉換在很多場景下都非常有用,比如在序列化和反序列化過程中、在數(shù)據(jù)傳輸和持久化時、或者在進行對象屬性的批量操作時,本文將介紹幾種不同的方法來實現(xiàn)Java對象和Map之間的相互轉換

引言

在Java開發(fā)中,經(jīng)常需要將Java對象轉換成Map,或者反過來將Map轉換成Java對象。這種轉換在很多場景下都非常有用,比如在序列化和反序列化過程中、在數(shù)據(jù)傳輸和持久化時、或者在進行對象屬性的批量操作時。

本文將介紹幾種不同的方法來實現(xiàn)Java對象和Map之間的相互轉換,選擇哪種方法取決于項目的具體需求和個人偏好。

一、使用Spring Framework的ReflectionUtils

1.1、Bean轉為Map

 @Test
    public void bean2Map(){
        Person person=new Person();
        person.setName("tiger");
        person.setAge(18);
        person.setAddress("中國");
        person.setCity("深圳");
        System.out.println(person);
        System.out.println(bean2Map(person));
        System.out.println(bean2Map2(person));
    }


    public static Map<String, Object> bean2Map(Object object) {
        Map<String, Object> map = new HashMap<>();
        ReflectionUtils.doWithFields(object.getClass(), field -> {
            field.setAccessible(true);
            Object value = ReflectionUtils.getField(field, object);
            if (value != null) {
                map.put(field.getName(), value);
            }
        });
        return map;
    }
    public static Map<String, Object> bean2Map2(Object object) {
        Map<String, Object> map = new HashMap<>();
        Class<?> clazz = object.getClass();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            try {
                Object value = field.get(object);
                if (value != null) {
                    map.put(field.getName(), value);
                }
            } catch (IllegalAccessException e) {
                throw new RuntimeException("Error accessing field: " + field.getName(), e);
            }
        }
        return map;
    }

結果輸出:

在這里插入圖片描述

1.2、Map轉為Bean

@Test
    public void map2bean() throws IllegalAccessException, InstantiationException {
        Map<String, Object> map = new HashMap();
        map.put("name", "tigerhhzz");
        map.put("age", 18);
        map.put("address","中國");
        map.put("city", "北京");
        System.out.println(map);
        System.out.println(map2Bean(map, Person.class));
        System.out.println(map2Bean2(map, Person.class));
    }

    public static <T> T map2Bean(Map<String, Object> map, Class<T> clazz) throws IllegalAccessException, InstantiationException {
        T instance = clazz.newInstance();
        ReflectionUtils.doWithFields(clazz, field -> {
            field.setAccessible(true);
            if (map.containsKey(field.getName())) {
                ReflectionUtils.setField(field, instance, map.get(field.getName()));
            }
        });
        return instance;
    }

    public static <T> T map2Bean2(Map<String, Object> map, Class<T> clazz) throws IllegalAccessException, InstantiationException {
        T instance = clazz.newInstance();
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            field.setAccessible(true);
            if (map.containsKey(field.getName())) {
                field.set(instance, map.get(field.getName()));
            }
        }
        return instance;
    }

結果輸出:

在這里插入圖片描述

二、使用Hutool工具

2.1、引入hutool依賴

		<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>5.5.9</version>
		</dependency>

2.2、Bean轉為Map

    @Test
    public void bean2Map(){
        Person person=new Person();
        person.setName("tiger");
        person.setAge(18);
        person.setAddress("中國");
        person.setCity("深圳");

        Map<String, Object> map = BeanUtil.beanToMap(person);

        System.out.println(person);
        System.out.println(bean2Map(person));
        System.out.println(bean2Map2(person));

        System.out.println(map);
    }

結果輸出:

在這里插入圖片描述

2.3、Map轉為Bean

    @Test
    public void map2bean() throws IllegalAccessException, InstantiationException {
        Map<String, Object> map = new HashMap();
        map.put("name", "tigerhhzz");
        map.put("age", 18);
        map.put("address","中國");
        map.put("city", "北京");

        Person person = BeanUtil.toBean(map, Person.class);

        System.out.println(map);
        System.out.println(map2Bean(map, Person.class));
        System.out.println(map2Bean2(map, Person.class));

        System.out.println(person);
    }

結果輸出:

在這里插入圖片描述

三、使用Jackson工具

3.1、Bean轉為Map

    @Test
    public void bean2Map(){
        Person person=new Person();
        person.setName("tiger");
        person.setAge(18);
        person.setAddress("中國");
        person.setCity("深圳");

        Map<String, Object> map = BeanUtil.beanToMap(person);

        System.out.println(person);
        System.out.println(bean2Map(person));
        System.out.println(bean2Map2(person));

        System.out.println(map);

        System.out.println(bean2MapByjackson(person));
    }

轉換方法:

    public static Map<String, Object> bean2MapByjackson(Object object) {
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.convertValue(object, new TypeReference<Map<String, Object>>() {
        });
    }

結果輸出:

在這里插入圖片描述

3.2、Map轉為Bean

    @Test
    public void map2bean() throws IllegalAccessException, InstantiationException {
        Map<String, Object> map = new HashMap();
        map.put("name", "tigerhhzz");
        map.put("age", 18);
        map.put("address","中國");
        map.put("city", "北京");

        Person person = BeanUtil.toBean(map, Person.class);

        System.out.println(map);
        System.out.println(map2BeanByReflectionUtils(map, Person.class));
        System.out.println(map2Bean2ByReflectionUtils(map, Person.class));

        System.out.println(person);

        System.out.println(map2BeanByjackson(map, Person.class));
    }

轉換方法:

    public static <T> T map2BeanByjackson(Map<String, Object> map, Class<T> clazz){
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.convertValue(map, clazz);
    }

結果輸出:

在這里插入圖片描述

四、使用Apache Commons Lang的BeanUtils

4.1、引入依賴

		<!-- commons-lang3 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.12.0</version>
		</dependency>
		<dependency>
			<groupId>commons-beanutils</groupId>
			<artifactId>commons-beanutils</artifactId>
			<version>1.9.4</version>
		</dependency>

4.2、Bean轉為Map

轉換方法:

    public static Map<String, String> bean2MapBycommonslang3(Object object) {
        try {
            return BeanUtils.describe(object);
        } catch (Exception e) {
            throw new RuntimeException("Error converting object to map: " + e.getMessage(), e);
        }
    }
    @Test
    public void bean2Map(){
        Person person=new Person();
        person.setName("tiger");
        person.setAge(18);
        person.setAddress("中國");
        person.setCity("深圳");

        Map<String, Object> map = BeanUtil.beanToMap(person);

        System.out.println(person);
        System.out.println(bean2Map(person));
        System.out.println(bean2Map2(person));

        System.out.println(map);

        System.out.println(bean2MapByjackson(person));

        System.out.println(bean2MapBycommonslang3(person));
    }

結果輸出:

在這里插入圖片描述

4.3、Map轉為Bean

轉換方法:

    public static <T> T map2BeanBycommonslang3(Map<String, ?> map, Class<T> clazz) {
        try {
            T instance = clazz.newInstance();
            BeanUtils.populate(instance, map);
            return instance;
        } catch (Exception e) {
            throw new RuntimeException("Error converting map to object: " + e.getMessage(), e);
        }
    }
    @Test
    public void map2bean() throws IllegalAccessException, InstantiationException {
        Map<String, Object> map = new HashMap();
        map.put("name", "tigerhhzz");
        map.put("age", 18);
        map.put("address","中國");
        map.put("city", "北京");

        Person person = BeanUtil.toBean(map, Person.class);

        System.out.println(map);
        System.out.println(map2BeanByReflectionUtils(map, Person.class));
        System.out.println(map2Bean2ByReflectionUtils(map, Person.class));

        System.out.println(person);

        System.out.println(map2BeanByjackson(map, Person.class));

        System.out.println(map2BeanBycommonslang3(map, Person.class));
    }

結果輸出:

在這里插入圖片描述

五、使用fastjson工具

5.1、 引入fastjson依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

5.2、 Bean轉為Map

    @Test
    public void bean2Map(){
        Person person=new Person();
        person.setName("tiger");
        person.setAge(18);
        person.setAddress("中國");
        person.setCity("深圳");

        Map<String, Object> map = BeanUtil.beanToMap(person);

        System.out.println(person);
        System.out.println(bean2Map(person));
        System.out.println(bean2Map2(person));

        System.out.println(map);

        System.out.println(bean2MapByjackson(person));

        System.out.println(bean2MapBycommonslang3(person));

        System.out.println(JSONObject.parseObject(JSONObject.toJSONString(person)));
    }

結果輸出:

在這里插入圖片描述

5.3、 Map轉為Bean

    @Test
    public void map2bean() throws IllegalAccessException, InstantiationException {
        Map<String, Object> map = new HashMap();
        map.put("name", "tigerhhzz");
        map.put("age", 18);
        map.put("address","中國");
        map.put("city", "北京");

        Person person = BeanUtil.toBean(map, Person.class);

        System.out.println(map);
        System.out.println(map2BeanByReflectionUtils(map, Person.class));
        System.out.println(map2Bean2ByReflectionUtils(map, Person.class));

        System.out.println(person);

        System.out.println(map2BeanByjackson(map, Person.class));

        System.out.println(map2BeanBycommonslang3(map, Person.class));

        System.out.println(JSONObject.parseObject(JSONObject.toJSONString(map), Person.class));
    }

結果輸出:

在這里插入圖片描述

以上就是Java對象和Map之間相互轉換的五種方法的詳細內(nèi)容,更多關于Java對象和Map互轉的資料請關注腳本之家其它相關文章!

相關文章

  • Mybatis-Plus3.2.0 MetaObjectHandler 無法進行公共字段全局填充

    Mybatis-Plus3.2.0 MetaObjectHandler 無法進行公共字段全局填充

    這篇文章主要介紹了Mybatis-Plus3.2.0 MetaObjectHandler 無法進行公共字段全局填充,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Java截取字符串的幾種方法示例

    Java截取字符串的幾種方法示例

    眾所周知java提供了很多字符串截取的方式,下面這篇文章主要給大家總結介紹了關于Java截取字符串的幾種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導出,在線文件導出)

    SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導出,在線文件導出)

    這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導出,在線文件導出),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java 如何調(diào)用long的最大值和最小值

    Java 如何調(diào)用long的最大值和最小值

    這篇文章主要介紹了Java 如何調(diào)用long的最大值和最小值的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java打印九九乘法表代碼詳情

    Java打印九九乘法表代碼詳情

    這篇文章主要介紹了Java打印九九乘法表,使用了雙重for循環(huán),使用do{}while()實現(xiàn)打印九九乘法表這些好玩的語法實現(xiàn),感興趣的小伙伴可參考下面文章內(nèi)容
    2021-09-09
  • Spring bean 四種注入方式詳解

    Spring bean 四種注入方式詳解

    這篇文章主要介紹了Spring bean的實例化和IOC依賴注入詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java樂觀鎖防止數(shù)據(jù)沖突的詳細過程

    Java樂觀鎖防止數(shù)據(jù)沖突的詳細過程

    樂觀鎖是一種并發(fā)控制機制,用于防止多個事務同時修改同一數(shù)據(jù)導致的數(shù)據(jù)不一致問題,它通過在數(shù)據(jù)記錄中添加一個版本號或時間戳字段,來判斷數(shù)據(jù)在兩次操作之間是否被其他事務修改本文介紹了樂觀鎖防止數(shù)據(jù)沖突的詳細過程
    2025-04-04
  • SpringBoot自動配置之自定義starter的實現(xiàn)代碼

    SpringBoot自動配置之自定義starter的實現(xiàn)代碼

    這篇文章主要介紹了SpringBoot自動配置之自定義starter的實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Springboot對接mqtt的項目實踐

    Springboot對接mqtt的項目實踐

    在SpringBoot中對接MQTT協(xié)議,可以使用Eclipse Paho客戶端和Spring Integration MQTT模塊,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-02-02
  • Java中?springcloud.openfeign應用案例解析

    Java中?springcloud.openfeign應用案例解析

    使用OpenFeign能讓編寫Web?Service客戶端更加簡單,使用時只需定義服務接口,然后在上面添加注解,OpenFeign也支持可拔插式的編碼和解碼器,這篇文章主要介紹了Java中?springcloud.openfeign應用案例解析,需要的朋友可以參考下
    2024-06-06

最新評論

介休市| 灵武市| 开平市| 广德县| 曲麻莱县| 广州市| 新化县| 定襄县| 福泉市| 金寨县| 增城市| 林周县| 和林格尔县| 泰宁县| 平泉县| 绥化市| 姚安县| 昔阳县| 永济市| 张家界市| 隆回县| 抚州市| 黄浦区| 达孜县| 定边县| 彩票| 英山县| 贡嘎县| 陇川县| 大同市| 寿宁县| 鄄城县| 信阳市| 河源市| 洛川县| 沙坪坝区| 定陶县| 麦盖提县| 贵港市| 鞍山市| 万源市|