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

上一篇:OC字符串的使用(一)


下一篇:【转】高通平台android 环境配置编译及开发经验总结