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

    作者:小鱼
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    tf-idf 解释
    maven 下载依赖失败
    eclipse 快捷键
    线程数 QPS
    resin conf
    静态成员 生命周期
    SuperMap 9D 实时数据服务学习笔记
    SuperMap iServer 在Linux 部署中问题总结
    在SuperMap iDesktop中如何快速追加记录行?
    Landsat8 卫星数据下载
  • 原文地址:https://www.cnblogs.com/sinosoft/p/10552711.html
Copyright © 2011-2022 走看看