java对象与map对象相互转换详解编程语言

 

/**  
* 使用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;   
}    
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/16973.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论