package com.cloud.common.utils; import java.lang.reflect.Method; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Set; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.ConvertUtils; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.beanutils.converters.DateConverter; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.fasterxml.jackson.databind.ObjectMapper; /** * @author xxx * @date */ public class BeanUtil { /** * bean 转换为map * * @param bean * @return */ public static Map toMap(Object bean) { Map objectAsMap = null; try { objectAsMap = new ObjectMapper().convertValue(bean, Map.class); } catch (Exception e) { e.printStackTrace(); } return objectAsMap; } /** * 把一个bean,构建另外一个bean * * @param requiredType * @param source * @return */ public static T copy(Class requiredType, Object source) { T dest = null; try { dest = requiredType.newInstance(); } catch (Exception e1) { } try { PropertyUtils.copyProperties(dest, source); } catch (Exception e) { } return dest; } /** * 把一个bean转换成JSON字符串 * * @param obj * @return */ public static String getJsonString(Object obj) { return JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullBooleanAsFalse // , // SerializerFeature.PrettyFormat ); } /** * 把JSON字符串转换成bean * * @param requiredType * @param jsonData * @return */ public static T getBean(Class requiredType, String jsonData) { if (jsonData != null) { try { return JSON.parseObject(jsonData, requiredType); } catch (Exception e) { e.printStackTrace(); } } T t = null; try { t = requiredType.newInstance(); } catch (Exception e) { e.printStackTrace(); } return t; } /** * 把map改成bean * * @param requiredType * @param map * @return */ public static T toBean(Class requiredType, Map map) { T t = null; String sLong = "java.lang.Long"; String sString = "java.lang.String"; try { t = requiredType.newInstance(); } catch (Exception e) { e.printStackTrace(); } try { //处理时间格式 DateConverter dateConverter = new DateConverter(); //设置日期格式 dateConverter.setPatterns(new String[]{"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd'T'HH:mm:ss.SSSZ", null}); //注册格式 ConvertUtils.register(dateConverter, Date.class); BeanUtils.populate(t, map); } catch (Exception e) { Set entrySet = map.entrySet(); for (Map.Entry entry : entrySet) { try { String key = entry.getKey() + ""; Object value = entry.getValue(); key = key.substring(0, 1).toUpperCase() + key.substring(1); String methodName = "set" + key; Method[] declaredMethods = t.getClass().getDeclaredMethods(); for (Method method : declaredMethods) { if (method.getName().equals(methodName)) { Class parameterType = method.getParameterTypes()[0]; String parameterTypeName = parameterType.getName(); Object parameterValue = null; if (parameterTypeName.equals(sLong)) { parameterValue = Long.parseLong(value + ""); } if (parameterTypeName.equals(sString)) { parameterValue = value + ""; } method.invoke(t, parameterValue); } } } catch (Exception e2) { e2.printStackTrace(); } } e.printStackTrace(); } return t; } }