java实现Object和Map之间的转换3种方式

发布时间 - 2026-01-11 02:06:11    点击率:

利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的

public static Object mapToObject(Map<String, Object> map, Class<?> beanClass)
      throws Exception {
    if (map == null)
      return null;
    Object obj = beanClass.newInstance();
    org.apache.commons.beanutils.BeanUtils.populate(obj, map);
    return obj;
  }

  public static Map<?, ?> objectToMap(Object obj) {
    if (obj == null) {
      return null;
    }
    return new org.apache.commons.beanutils.BeanMap(obj);
  }

利用java reflect完成Obj和Map之间的相互转换

    public Map<String,Object> Obj2Map(Object obj) throws Exception{
      Map<String,Object> map=new HashMap<String, Object>();
      Field[] fields = obj.getClass().getDeclaredFields();
      for(Field field:fields){
        field.setAccessible(true);
        map.put(field.getName(), field.get(obj));
      }
      return map;
    }
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      Object obj = clz.newInstance();
      Field[] declaredFields = obj.getClass().getDeclaredFields();
      for(Field field:declaredFields){
        int mod = field.getModifiers(); 
        if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
          continue;
        }
        field.setAccessible(true);
        field.set(obj, map.get(field.getName()));
      }
      return obj;
    }

利用Introspector完成Obj和Map之间的相互转换

public Map<String,Object> obj2Map(Object obj) throws Exception{
      Map<String,Object> map=new HashMap<String, Object>();
      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;
    }
    
    public Object map2Obj(Map<String,Object> map,Class<?> clz) throws Exception{
      if (map == null)  
        return null;  
      Object obj = clz.newInstance(); 
      BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());  
      PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();  
      for (PropertyDescriptor property : propertyDescriptors) { 
        Method setter = property.getWriteMethod();  
        if (setter != null) { 
          setter.invoke(obj, map.get(property.getName()));  
        } 
      } 
      return obj;
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java  # Map转Object  # Object转Map  # Java中HashMap和TreeMap的区别深入理解  # Java中List与Map初始化的一些写法分享  # JAVA HashMap详细介绍和示例  # Java8中利用stream对map集合进行过滤的方法  # java如何对map进行排序详解(map集合的使用)  # Java的MyBatis框架中Mapper映射配置的使用及原理解析  # java 三种将list转换为map的方法详解  # Java集合Set、List、Map的遍历方法  # 详解Java8新特性Stream之list转map及问题解决  # 简单易懂的Java Map数据添加指南  # 最简单  # 大家多多  # Exception  # throws  # return  # null  # beanClass  # map  # gt  # Class  # populate  # beanutils  # BeanMap  # objectToMap  # apache  # obj  # reflect  # org  # newInstance  # String 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作软件有哪些,制图软件有哪些?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  JS弹性运动实现方法分析  香港网站服务器数量如何影响SEO优化效果?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何选择PHP开源工具快速搭建网站?  详解vue.js组件化开发实践  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  焦点电影公司作品,电影焦点结局是什么?  Python正则表达式进阶教程_复杂匹配与分组替换解析  如何在VPS电脑上快速搭建网站?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  如何在腾讯云服务器上快速搭建个人网站?  制作公司内部网站有哪些,内网如何建网站?  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何快速建站并高效导出源代码?  Windows Hello人脸识别突然无法使用  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  香港服务器WordPress建站指南:SEO优化与高效部署策略  三星、SK海力士获美批准:可向中国出口芯片制造设备  常州企业网站制作公司,全国继续教育网怎么登录?  网页设计与网站制作内容,怎样注册网站?  如何快速完成中国万网建站详细流程?  在线制作视频网站免费,都有哪些好的动漫网站?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  jQuery中的100个技巧汇总  javascript基本数据类型及类型检测常用方法小结  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Laravel如何升级到最新版本?(升级指南和步骤)  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何在云服务器上快速搭建个人网站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  英语简历制作免费网站推荐,如何将简历翻译成英文?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  HTML 中动态设置元素 name 属性的正确语法详解  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】