当前位置: 首页 > news >正文

javaBean与map类型相互转换

/**
   * 把Map键值对转化为javaBean对象
   * 
   * @param type
   * @param map
   * @return
   * @throws Exception
   */
  private Object transforMapToObject(Class<? extends Object> type, Map<String, String> map) throws Exception {
    BeanInfo beanInfo = Introspector.getBeanInfo(type); //获取类属性
    Object obj = type.newInstance(); //创建 JavaBean 对象
    //给 JavaBean对象的属性赋值
    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    for (int i = 0; i < propertyDescriptors.length; i++) {
      PropertyDescriptor descriptor = propertyDescriptors[i];
      String propertyName = descriptor.getName();
      if (map.containsKey(propertyName)) {
        try {
          Object value = map.get(propertyName);
          Object[] args = new Object[1];
          args[0] = value;
          descriptor.getWriteMethod().invoke(obj, args);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return obj;
  }

  /**
   * 把javaBean对象转换为Map键值对
   * 
   * @param bean
   * @return
   * @throws Exception
   */
  private Map<String, String> transforObjectToMap(Object bean) throws Exception {
    Class<? extends Object> type = bean.getClass();
    Map<String, String> returnMap = new HashMap<String, String>();
    BeanInfo beanInfo = Introspector.getBeanInfo(type);
    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    for (int i = 0; i < propertyDescriptors.length; i++) {
      PropertyDescriptor descriptor = propertyDescriptors[i];
      String propertyName = descriptor.getName();
      if (!propertyName.equals("class")) {
        Method readMethod = descriptor.getReadMethod();
        Object result = readMethod.invoke(bean, new Object[0]);
        if (result != null) {
          returnMap.put(propertyName, result.toString());
        }
      }
    }
    return returnMap;
  }

 

转载于:https://www.cnblogs.com/hualuoxiangxi/p/3707680.html

相关文章:

  • mysql错误代码和消息对照表--转载
  • Varnish调优手记
  • IOS文件操作
  • 本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善(转)...
  • linux驱动编译常见错误记录
  • IT项目中存储设备的选型
  • 使用ASP.Net WebAPI构建REST服务(五)——客户端
  • CentOS Mahout部署
  • 软件设计的思想与哲学
  • VC中利用多线程技术实现线程之间的通信
  • 苹果平台上的媒体流播放技术HLS
  • 我的另外一个博客
  • Mod_Python中文文档
  • Radmin远程连接TMG
  • 自动化运维之 ~cobbler~
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • echarts的各种常用效果展示
  • ECS应用管理最佳实践
  • es的写入过程
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • express.js的介绍及使用
  • FineReport中如何实现自动滚屏效果
  • Hibernate【inverse和cascade属性】知识要点
  • JS字符串转数字方法总结
  • Markdown 语法简单说明
  • React系列之 Redux 架构模式
  • 跳前端坑前,先看看这个!!
  • 微信小程序实战练习(仿五洲到家微信版)
  • 最简单的无缝轮播
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (笔试题)合法字符串
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计大学生兼职系统
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net Web窗口页属性
  • .NET开发者必备的11款免费工具
  • .NET值类型变量“活”在哪?
  • :如何用SQL脚本保存存储过程返回的结果集
  • @RequestParam详解
  • @软考考生,这份软考高分攻略你须知道
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [Apio2012]dispatching 左偏树
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [cocos2d-x]关于CC_CALLBACK
  • [FxCop.设计规则]8. 也许参数类型应该是基类型
  • [Golang]K-V存储引擎的学习 从零实现 (RoseDB mini版本)
  • [HOW TO]如何在iPhone应用程序中发送邮件