Java实现对象转换成Map以及类型处理

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;


public class JavaBeanUtil {

@SuppressWarnings("rawtypes")
public static Map convertBeanToMap(Object bean) throws IntrospectionException,IllegalAccessException, InvocationTargetException {
Class type = bean.getClass();
System.out.println(type);
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(type);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
Method readMethod = descriptor.getReadMethod();
Object result = readMethod.invoke(bean, new Object[0]);
if (result != null) {
if (descriptor.getPropertyType() == Date.class) {
returnMap.put(propertyName, sdf.format(result));
} else if (descriptor.getPropertyType() == BigDecimal.class) {
returnMap.put(propertyName, formatNumber((BigDecimal) result));
} else {
returnMap.put(propertyName, result);
}
} else {
returnMap.put(propertyName, "");
}
}
}
return returnMap;
    }

/**
* 数字保留两位小数
* @return
*/
public static String formatNumber(BigDecimal value) {
if (value == null) {
return "";
}
DecimalFormat df = new DecimalFormat("0.00");  
df.setRoundingMode(RoundingMode.HALF_UP);  
return df.format(value); 
}
}

你可能感兴趣的:(Java后台)