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<String, Object> 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> T copy(Class<T> 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> T getBean(Class<T> 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> T toBean(Class<T> 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<Map.Entry> 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;
|
}
|
|
}
|