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<String,Object> convertBeanToMap(Object bean) throws IntrospectionException,IllegalAccessException, InvocationTargetException {
Class type = bean.getClass();
System.out.println(type);
Map<String,Object> returnMap = new HashMap<String, Object>();
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); 
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值