文章目录

    • Map转Object
      • 方式一:通过BeanMap转
      • 方式二:通过fastJson转
      • 方式三:通过gson转
    • Object转Map
      • 方式一:通过BeanMap转
      • 方式二:通过fastJson转
      • 方式三:通过gson转(不推荐)
        • 不推荐理由

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 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时才可以放心使用!