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时才可以放心使用!文章来源:https://www.toymoban.com/news/detail-766183.html
文章来源地址https://www.toymoban.com/news/detail-766183.html
到了这里,关于Java中Map与对象之间互相转换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!