8. Object转Map,Map转Object

Posted on 2018-02-09 11:10  zkx4213  阅读(175)  评论(0编辑  收藏  举报

   法一:使用reflect进行转换

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


法二:使用Introspector进行转换
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;  
}    
 

Copyright © 2024 zkx4213
Powered by .NET 8.0 on Kubernetes