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

    作者:小鱼
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Shell是linux下的脚本语言解析器
    semver 是 语义化版本
    js中限制字符串输入中英文字符的长度封装
    chalk.js(node终端样式库)
    分页
    利用Nodejs的os.networkInterfaces()模块修改vuecli项目默认打开地址
    物理像素
    长列表优化eg
    [JSOI2008]球形空间产生器
    标记不下传线段树(混蛋树)
  • 原文地址:https://www.cnblogs.com/sinosoft/p/10552711.html
Copyright © 2011-2022 走看看