java實現map和object互轉的三種方法

pw36 9年前發布 | 50K 次閱讀 Java

/**

  • 使用org.apache.commons.beanutils進行轉換 */
    class A {

    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;  
    

    }

    public static Map<?, ?> objectToMap(Object obj) {

     if(obj == null)  
         return null;   
    
     return new org.apache.commons.beanutils.BeanMap(obj);  
    

    }

}

/**

  • 使用Introspector進行轉換 */
    class B {

    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {

     if (map == null)   
         return null;    
    
     Object obj = beanClass.newInstance();  
    
     BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());    
     PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();    
     for (PropertyDescriptor property : propertyDescriptors) {  
         Method setter = property.getWriteMethod();    
         if (setter != null) {  
             setter.invoke(obj, map.get(property.getName()));   
         }  
     }  
    
     return obj;  
    

    }

    public static Map<String, Object> objectToMap(Object obj) throws Exception {

     if(obj == null)  
         return null;      
    
     Map<String, Object> map = new HashMap<String, Object>();   
    
     BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());    
     PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();    
     for (PropertyDescriptor property : propertyDescriptors) {    
         String key = property.getName();    
         if (key.compareToIgnoreCase("class") == 0) {   
             continue;  
         }  
         Method getter = property.getReadMethod();  
         Object value = getter!=null ? getter.invoke(obj) : null;  
         map.put(key, value);  
     }    
    
     return map;  
    

    }

}

/**

  • 使用reflect進行轉換 */
    class C {

    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {

     if (map == null)  
         return null;    
    
     Object obj = beanClass.newInstance();  
    
     Field[] fields = obj.getClass().getDeclaredFields();   
     for (Field field : fields) {    
         int mod = field.getModifiers();    
         if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){    
             continue;    
         }    
    
         field.setAccessible(true);    
         field.set(obj, map.get(field.getName()));   
     }   
    
     return obj;    
    

    }

    public static Map<String, Object> objectToMap(Object obj) throws Exception {

     if(obj == null){    
         return null;    
     }   
    
     Map<String, Object> map = new HashMap<String, Object>();    
    
     Field[] declaredFields = obj.getClass().getDeclaredFields();    
     for (Field field : declaredFields) {    
         field.setAccessible(true);  
         map.put(field.getName(), field.get(obj));  
     }    
    
     return map;  
    

    }
    } </pre>

 本文由用戶 pw36 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!