package com.mixsmart.utils; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; /** * 简单对象工具类 * * @author lmq * @version 1.0 * @since 1.0 * 2015年8月22日 */ public class ObjectUtils { /** * 根据内容进行数据类型转换 *

如:字符串“5”转换之后变成整型5

* * @param value * @return 转换后的值 */ public static Object covertDataType(Object value) { Object obj = null; String valueStr = value.toString(); if (StringUtils.isNotEmpty(valueStr)) { if (StringUtils.isInteger(valueStr)) { obj = Integer.parseInt(valueStr); } else if (StringUtils.isDecimal(valueStr)) { obj = Double.parseDouble(valueStr); } else { obj = value; } } else { obj = value; } return obj; } /** * boolean型转化为整型
* 转换依据是:true--1;false--0 * * @param value * @return 返回1或0 */ public static int boolean2Int(boolean value) { return value ? 1 : 0; } /** * boolean型转化为String
* 转换依据是:true--"1";false--"0" * * @param value * @return 返回“1”或“0” */ public static String boolean2String(boolean value) { return value ? "1" : "0"; } /** * int型转化为boolean
* 转换依据是:1--true;非1--false * * @param value * @return 返回true或false */ public static boolean int2Boolean(int value) { return value == 1; } /** * Strng型转化为boolean
* 转换依据是:"1"--true;非"1"--false * * @param value * @return 返回true或false */ public static boolean string2Boolean(String value) { return "1".equals(value); } /** * 简单Bean对象转换为Map对象; *

转换规则是:实例属性作为Map的key,实例属性对应的值作为Map对象的value.

*

注:当属性对应的值为空(null或"")时,实例对应的属性不会放到Map对象中;既:属性对应的值为空时不转换.

* * @param objBean 简单对象实例 * @return 返回转换后的Map对象 */ public static Map simpleBean2Map(Object objBean) { if (null == objBean) { return null; } Class clazz = objBean.getClass(); Map maps = new HashMap(); convert2Map(objBean, clazz, maps); return (maps.isEmpty() ? null : maps); } /** * 对象转换为Map * * @param objBean 对象实例 * @param clazz 对象类 * @param maps 转换后的Map对象 */ private static void convert2Map(Object objBean, Class clazz, Map maps) { Field[] fields = clazz.getDeclaredFields(); if (null == fields || fields.length == 0) { return; } try { for (Field field : fields) { if (Modifier.isStatic(field.getModifiers()) || Modifier.isFinal(field.getModifiers())) { continue; } String fieldName = field.getName(); PropertyDescriptor propertyDesc = new PropertyDescriptor(fieldName, clazz); Method method = propertyDesc.getReadMethod(); if (null != method) { Object value = method.invoke(objBean); if (null != value && StringUtils.isNotEmpty(value.toString())) { if (null != value && value instanceof String && value.toString().startsWith("%")) { maps.put(fieldName, URLDecoder.decode(value.toString(), "UTF-8")); } else if (value.getClass().isArray()) { Object[] values = (Object[]) value; if (values.length > 0) { maps.put(fieldName, value); } } else { maps.put(fieldName, value); } } } method = null; } } catch (SecurityException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } Class superClazz = clazz.getSuperclass(); if (null != superClazz) { convert2Map(objBean, superClazz, maps); } } /** * 处理Boolean类型数据;对象转Boolean类型 * * @param value 值 * @return 返回true或false */ public static boolean handleBoolean(Object value) { if (null == value) { return false; } try { return Boolean.parseBoolean(value.toString()); } catch (Exception e) { return false; } } }