实体转Map工具,添加排除一些不要的字段
package cn.emd.platform.workflow.util;
import java.lang.reflect.Field;
import java.util.*;
/**
* 实体转换工具类
*
* @author pan
* @date 2021/4/21
*/
public class BeanUtils {
private BeanUtils(){}
public static Map<String, Object> convertToMap(Object obj) {
return convertToMap(obj, null,false);
}
public static Map<String, Object> convertToMap(Object obj, List<String> needlessFields) {
return convertToMap(obj, needlessFields,false);
}
public static Map<String, Object> convertToMap(Object obj,List<String> needlessFields,boolean convertNull) {
if(obj == null){
return null;
}
Map<String, Object> map = new HashMap<>();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
try {
Object o = field.get(obj);
//排除不需要的字段
if(needlessFields !=null && needlessFields.size() !=0){
if(needlessFields.contains(field.getName())){
continue;
}
}
if (Objects.nonNull(o)){
if (o instanceof Collection) {
if (((Collection)o).size()==0){
continue;
}
} else if (o instanceof Map) {
if (((Map) o).size() == 0) {
continue;
}
} else if (o instanceof Enum) {
o = ((Enum) o).name();
}
map.put(field.getName(), o);
}
else if(convertNull) {
map.put(field.getName(), null);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return map;
}
}