Bean to Map and Map to Bean

 

 

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;

}

}

 

你可能感兴趣的:(Bean to Map and Map to Bean)