zoukankan      html  css  js  c++  java
  • Java中Map和Object的互相转换方式

    一、使用Apache中的BeanUtils类,导入commons-beanutils包。

      Jar包Maven下载地址:https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils

      底层实现方式:

      //1、map转换为object

      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;
      }

      //2、object转换为map

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

    二、利用java.lang.reflect.Field类完成Obj和Map之间的相互转换。

      直接引用Field类即可。

      实现方式:

      //1、object转换成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;
      }

      //2、map转换为object

      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;
      }

    作者:小鱼
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Typora标题自动编号+设定快捷键技巧
    配置redis 4.0.11 集群
    学会使用 Mysql show processlist 排查问题
    Golang学习的方法和建议
    日志文件删除shell脚本
    运维趋势2019年总结,运维就是要做到"技多不压身"
    我的xshell配色方案,绿色/护眼/留存/备份
    对于api接口的爬虫,通常的解决方法
    maven 打包和构建的Linux命令(mvn)
    Istio的流量管理入门-charlieroro编写
  • 原文地址:https://www.cnblogs.com/sinosoft/p/10552711.html
Copyright © 2011-2022 走看看