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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。