Java中Map与对象之间互相转换的几种常用方式

 更新时间:2024年01月26日 15:42:23   作者:Jon Young  
在Java中将对象和Map相互转换是常见的操作,可以通过不同的方式实现这种转换,下面这篇文章主要给大家介绍了关于Java中Map与对象之间互相转换的几种常用方式,需要的朋友可以参考下

前言

Map在日常开发应用中的频率很高,最常用的实现类是HashMap和有序的TreeMap。在企业级应用中,更多的应用场景是关联JSON和Object使用,Map可以用于JSON传参、接收JSON参数,返回JSON数据等,也可以用于对象处理,开发者可以省一些简单实体类,用map来替代。

接下来就提供Map与Object之间互相转换的几种方式:

Map转Object

方式一:通过BeanMap转

创建BeanMap并传入待转对象,直接把Map的值put到BeanMap中,就转换成功了

	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);
    }

方式二:通过fastJson转

先把map转为json字符串,再把json字符串转为对象

	public void mapToObj2(){
        Map<String,Object> map = initMap();
        String s = JSON.toJSONString(map);
        User user = JSON.parseObject(s, User.class);
        System.out.println(user);
    }

方式三:通过gson转

先把map转为json字符串,再把json字符串转为对象

	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转Map

方式一:通过BeanMap转

实例化BeanMap的时候传入对象,返回值就是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);
    }

方式二:通过fastJson转

先把对象转为json字符串,再把json字符串转为泛型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>>(){});
        //下面这种方式也可以转
        //Map<String, Object> map = JSON.parseObject(s, HashMap.class);
        System.out.println(map);
    }

方式三:通过gson转(不推荐)

先把对象转为json字符串,再把json字符串转为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转map的时候,会把int型或long型的整形数据全部转换为double类型的浮点型,不能实现准确转换。只有数据类型全部为String时才可以放心使用!

总结 

到此这篇关于Java中Map与对象之间互相转换的几种常用方式的文章就介绍到这了,更多相关Java Map与对象互相转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Sparsearray稀疏数组原理及实例详解

    Sparsearray稀疏数组原理及实例详解

    这篇文章主要介绍了Sparsearray稀疏数组原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • java实现坦克大战小游戏

    java实现坦克大战小游戏

    这篇文章主要为大家详细介绍了java实现坦克大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • Java泛型映射不同的值类型详解及实例代码

    Java泛型映射不同的值类型详解及实例代码

    这篇文章主要介绍了Java泛型映射不同的值类型详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • Java使用GUI实现贪吃蛇游戏详解

    Java使用GUI实现贪吃蛇游戏详解

    小时候经常在诺基亚上玩的一个小游戏-贪吃蛇,你还记得吗?本篇带你重温一下把它实现,做的比较简单,但还是可以玩的.感兴趣的朋友快来看看吧
    2022-05-05
  • Java并发编程之线程间的通信

    Java并发编程之线程间的通信

    当线程在系统内运行时,程序通常无法准确的控制线程的轮换执行,但我们可以通过一些机制来保障线程的协调运行,本文着重讲解线程间的通信机制
    2021-06-06
  • Spring Boot + Kotlin整合MyBatis的方法教程

    Spring Boot + Kotlin整合MyBatis的方法教程

    前几天由于工作需要,便开始学习了kotlin,java基础扎实学起来也还算比较快,对于kotlin这个编程语言自然是比java有趣一些,下面这篇文章主要给大家介绍了关于Spring Boot + Kotlin整合MyBatis的方法教程,需要的朋友可以参考下。
    2018-01-01
  • java 实现文件夹的拷贝实例代码

    java 实现文件夹的拷贝实例代码

    这篇文章主要介绍了java 实现文件夹的拷贝实例代码的相关资料,需要的朋友可以参考下
    2017-04-04
  • 一文详解Java中的动态填充Html模版并转PDF

    一文详解Java中的动态填充Html模版并转PDF

    在后端技术中,模板引擎和PDF生成工具是两个非常重要的领域,Thymeleaf和wkhtmltopdf是这两个领域的杰出代表,下面就来详细介绍一下Thymeleaf和wkhtmltopdf的技术特点吧
    2023-12-12
  • Spring6.x对调度和异步执行的注解支持示例详解

    Spring6.x对调度和异步执行的注解支持示例详解

    这篇文章主要为大家介绍了Spring6.x对调度和异步执行的注解支持示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Java反射获取class对象方式解析

    Java反射获取class对象方式解析

    这篇文章主要介绍了Java反射获取class对象方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论