我的编程空间,编程开发者的网络收藏夹
学习永远不晚

常用的map转bean互转方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

常用的map转bean互转方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、hutool工具类

这个很常用,还支持将蛇形转成驼,如:apply_time 会赋值到applyTime上

        LTDemo ltDemo = BeanUtil.mapToBean(map, LTDemo.class, true, CopyOptions.create());        Map demoMap = BeanUtil.beanToMap(ltDemo);                System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println("输出bean -> map : " + demoMap);        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren());        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));        ltDemo.getChildren().forEach(children -> System.out.println(children.getAddress()));
输出原生map: {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:21:01 CST 2023, age=2}], name=张三, apply_time=Fri Mar 03 17:21:01 CST 2023, age=20}输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])])输出bean -> map : {name=张三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])]}Fri Mar 03 17:21:01 CST 2023[LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])]LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:01 CST 2023, children=[])上海市

二、fastjson工具类

这个也很常用,也支持将蛇型转成驼峰,
如:apply_time 会赋值到applyTime

        LTDemo ltDemo = JSONObject.parseObject(JSONObject.toJSONString(map), LTDemo.class);        Map demoMap = JSONObject.parseObject(JSONObject.toJSONString(ltDemo), Map.class);                System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println("输出bean -> map : " + demoMap);        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren());        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));        ltDemo.getChildren().forEach(children -> System.out.println(children.getAddress()));
输出原生map: {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:21:59 CST 2023, age=2}], name=张三, apply_time=Fri Mar 03 17:21:59 CST 2023, age=20}输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])])输出bean -> map : {address=上海市, children=[{"address":"上海市","children":[],"name":"小张","applyTime":1677835319813,"age":2}], name=张三, applyTime=1677835319813, age=20}Fri Mar 03 17:21:59 CST 2023[LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])]LTDemo(name=小张, age=2, address=上海市, applyTime=Fri Mar 03 17:21:59 CST 2023, children=[])上海市

三、beanutils_BeanUtils工具类 不太好用

嵌套型map,转换会有问题,且不支持蛇型转成驼峰

    //-------------------    beanutils_BeanUtils  -----------------    //map转java对象    public static  T beanUtils_mapToObject(Map map, Class clazz) throws Exception {        if (map == null) {            return null;        }        T bean = clazz.newInstance();        BeanUtils.populate(bean, map);        return bean;    }
        LTDemo ltDemo = beanUtils_mapToObject(map, LTDemo.class);        System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren().get(0).getApplyTime());
输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=Fri Mar 03 17:04:38 CST 2023, children=[{address=上海市, name=小张, applyTime=Fri Mar 03 17:04:38 CST 2023, age=2}])Fri Mar 03 17:04:38 CST 2023Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat com.example.demo.map2bean.MapToBean.main(MapToBean.java:73)

四、cglib BeanMap工具类 不太好用

这个也很常用,也支持将蛇形转成驼,如:apply_time 会赋值到applyTime上

import net.sf.cglib.beans.BeanMap;    // -------------------   cglib BeanMap  -------------------    //map对象转java    public static  T BeanMapMapToObject(Map map, Class beanClass) throws Exception {        T object = beanClass.newInstance();        BeanMap beanMap = BeanMap.create(object);        beanMap.putAll(map);        return object;    }    //java对象转map    public static Map BeanMapObjectToMap(Object obj) {        Map map = Maps.newHashMap();        if (obj != null) {            BeanMap beanMap = BeanMap.create(obj);            for (Object key : beanMap.keySet()) {                map.put(key + "", beanMap.get(key));            }        }        return map;    }
        LTDemo ltDemo = beanMapMapToObject(map, LTDemo.class);        Map demoMap = beanMapObjectToMap(ltDemo);        System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println("输出bean -> map : " + demoMap);        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren());        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));
输出原生map: {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}], name=张三, apply_time=Fri Mar 03 17:12:45 CST 2023, age=20}输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}])输出bean -> map : {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}], name=张三, applyTime=null, age=20}null[{address=上海市, name=小张, apply_time=Fri Mar 03 17:12:45 CST 2023, age=2}]Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat java.util.ArrayList.forEach(ArrayList.java:1259)at com.example.demo.map2bean.MapToBean.main(MapToBean.java:75)

五、reflect 反射来玩 不太好玩

    //-------------------   reflect     -------------------    //map转java对象    public static Object reflectMapToObject(Map map, Class beanClass) throws Exception {        if (map == null) {            return null;        }        Object object = beanClass.newInstance();        Field[] fields = beanClass.getDeclaredFields();        for (Field field : fields) {            int mod = field.getModifiers();            if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) {                continue;            }            field.setAccessible(true);            field.set(object, map.get(field.getName()));        }        return object;    }    //java对象转map    public static Map reflectObjectToMap(Object obj) throws Exception {        if (obj == null) {            return null;        }        Map map = new HashMap();        Field[] declaredFields = obj.getClass().getDeclaredFields();        for (Field field : declaredFields) {            field.setAccessible(true);            map.put(field.getName(), field.get(obj));        }        return map;    }
        LTDemo ltDemo = reflectMapToObject(map,LTDemo.class);        Map demoMap = reflectObjectToMap(ltDemo);        System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println("输出bean -> map : " + demoMap);        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren());        ltDemo.getChildren().forEach(children -> System.out.println(children.toString()));
输出原生map: {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}], name=张三, apply_time=Fri Mar 03 17:16:35 CST 2023, age=20}输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}])输出bean -> map : {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}], name=张三, applyTime=null, age=20}null[{address=上海市, name=小张, apply_time=Fri Mar 03 17:16:35 CST 2023, age=2}]Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat java.util.ArrayList.forEach(ArrayList.java:1259)at com.example.demo.map2bean.MapToBean.main(MapToBean.java:84)

六、Introspector类 不太好用

这个用起来,只能转换第一层,而且不支持蛇型转驼峰

import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor; //----------------- Introspector    ------------------    //map转java对象    public static  T introspector_mapToObject(Map map, Class clazz) throws Exception {        if (map == null) {            return null;        }        T bean = clazz.newInstance();        BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();        for (PropertyDescriptor property : propertyDescriptors) {            Method setter = property.getWriteMethod();            if (setter != null) {                setter.invoke(bean, map.get(property.getName()));            }        }        return bean;    }    //java对象转map    public static Map introspector_objectToMap(Object obj) throws Exception {        if (obj == null) {            return null;        }        Map map = new HashMap();        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());        PropertyDescriptor[] propertyDescriptors = beanInfo                .getPropertyDescriptors();        for (PropertyDescriptor property : propertyDescriptors) {            String key = property.getName();            if (key.compareToIgnoreCase("class") == 0) {                continue;            }            Method getter = property.getReadMethod();            Object value = getter != null ? getter.invoke(obj) : null;            map.put(key, value);        }        return map;    }
        LTDemo ltDemo = introspector_mapToObject(map, LTDemo.class);        Map demoMap = introspector_objectToMap(ltDemo);        System.out.println("输出map -> bean: " + ltDemo.toString());        System.out.println("输出bean -> map : " + demoMap);        System.out.println(ltDemo.getApplyTime());        System.out.println(ltDemo.getChildren());        System.out.println(ltDemo.getChildren().get(0).toString());
输出原生map: {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}], name=张三, apply_time=Fri Mar 03 16:56:37 CST 2023, age=20}输出map -> bean: LTDemo(name=张三, age=20, address=上海市, applyTime=null, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}])输出bean -> map : {address=上海市, children=[{address=上海市, name=小张, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}], name=张三, applyTime=null, age=20}null[{address=上海市, name=小张, apply_time=Fri Mar 03 16:56:37 CST 2023, age=2}]Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to com.example.demo.map2bean.LTDemoat com.example.demo.map2bean.MapToBean.main(MapToBean.java:65)

总结

不想说啥…看着用吧

来源地址:https://blog.csdn.net/qq_37700773/article/details/129323025

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

常用的map转bean互转方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

常用的map转bean互转方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 常用的map转bean互转方法 一、hutool工具类二、fastjson工具类三、beanutils_BeanUtils工具类 不太好用四、cglib Bea
2023-08-17

JavaBeanMap实现Bean与Map的相互转换

这篇文章主要介绍了利用BeanMap进行对象与Map的相互转换,通过net.sf.cglib.beans.BeanMap类中的方法来转换,效率极高,本文给大家分享实现代码,感兴趣的朋友一起看看吧
2022-11-21

Java BeanMap如何实现Bean与Map的相互转换

本篇内容主要讲解“Java BeanMap如何实现Bean与Map的相互转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java BeanMap如何实现Bean与Map的相互转换”吧!bean
2023-07-04

Java中JavaBean对象和Map的互相转换方法实例

为什么需要将javaBean和map进行转换,在很多应用场景中,需要将key=value形式的数据与javaBean对象相互转换,下面这篇文章主要给大家介绍了关于Java中JavaBean对象和Map的互相转换的相关资料,需要的朋友可以参考下
2022-11-16

java string转map的方法是什么

在Java中,可以通过多种方式将字符串转换为Map。下面是两种常用的方法:方法一:使用split()函数和循环遍历```javaString str = "key1=value1,key2=value2,key3=value3";Map m
2023-10-12

json转map最快的方法是什么

将JSON转换为Map的最快方法是使用Jackson库。Jackson是一个非常快速和高效的JSON处理库,它提供了将JSON字符串转换为Java对象的功能。要将JSON转换为Map,可以使用Jackson的ObjectMapper类的re
2023-09-12

Tensor和NumPy相互转换的方法

本文主要介绍了Tensor和NumPy相互转换的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-19

Map与JavaBean相互转换的工具类怎么使用

今天小编给大家分享一下Map与JavaBean相互转换的工具类怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用范围
2023-06-29

java map转list对象的方法是什么

Rate limit reached for gpt-3.5-turbo in organization org-68Lqb4iD2GUhNJWqRdyhiGwp on requests per day. Limit: 200 / day.
2023-10-18

java实体对象转map的方法是什么

Java实体对象转Map的方法有以下几种:1. 使用Java反射机制:通过使用Java的反射机制,可以获取实体对象的所有字段和对应的值,然后将它们存储在一个Map中。```javapublic static Map objectToMap
2023-09-16

Map的常用方法有哪些

本篇内容主要讲解“Map的常用方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Map的常用方法有哪些”吧!set底层是默认value的mapMap的常用方法//介绍Map接口的方法Map
2023-06-02

python用reduce和map把字符串转为数字的方法

python中reduce和map简介 map(func,seq1[,seq2...]) :将函数func作用于给定序列的每个元素,并用一个列表来提供返回值;如果func为None,func表现为身份函数,返回一个含有每个序列中元素集合的n
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录