import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class MapUtils {
public static Map<String, Object> Bean2Map(Object obj) throws Exception {
if(obj == null){
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
Class<?> cls = obj.getClass();
Field[] beanFields = cls.getDeclaredFields();
for (Field f : beanFields) {
String filedName = f.getName();
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(filedName, cls);
Object result = propertyDescriptor.getReadMethod().invoke(obj);
map.put(filedName, result);
}
return map;
}
@SuppressWarnings("unchecked")
public static <T> T MapToBean(Map<?, ?> map, Class<T> type) throws Exception {
BeanInfo beanInfo = Introspector.getBeanInfo(type);
Object obj = type.newInstance();
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
Object value = map.get(propertyName);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, value);
}
}
return (T) obj;
}
public static Map<String, Object> FieldsToMap( Class<?> type) throws Exception{
if(type == null){
return null;
}
Map<String, Object> map = new HashMap<String, Object>();
Object obj = type.newInstance();
Field[] beanFields = type.getDeclaredFields();
for (Field f : beanFields) {
String filedName = f.getName();
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(filedName, type);
Object result = propertyDescriptor.getReadMethod().invoke(obj);
map.put(filedName, result);
}
return map;
}
}