首页 > 基础资料 博客日记

Java中Map与对象之间互相转换

2024-02-21 21:56:57基础资料围观259

本篇文章分享Java中Map与对象之间互相转换,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识


        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://blog.csdn.net/weixin_50989469/article/details/129623966
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!

标签:

相关文章

本站推荐

标签云