package com.ots.common.utils;
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.lang.reflect.Field;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.Map;
|
import java.util.Map.Entry;
|
|
public class MapDataUtil {
|
public static Map<String, Object> convertDataMap(HttpServletRequest request) {
|
Map<String, String[]> properties = request.getParameterMap();
|
Map<String, Object> returnMap = new HashMap<String, Object>();
|
Iterator<?> entries = properties.entrySet().iterator();
|
Map.Entry<?, ?> entry;
|
String name = "";
|
String value = "";
|
while (entries.hasNext()) {
|
entry = (Entry<?, ?>) entries.next();
|
name = (String) entry.getKey();
|
Object valueObj = entry.getValue();
|
if (null == valueObj) {
|
value = "";
|
} else if (valueObj instanceof String[]) {
|
String[] values = (String[]) valueObj;
|
for (int i = 0; i < values.length; i++) {
|
value = values[i] + ",";
|
}
|
value = value.substring(0, value.length() - 1);
|
} else {
|
value = valueObj.toString();
|
}
|
returnMap.put(name, value);
|
}
|
return returnMap;
|
}
|
|
/**
|
* 对传入的对象进行数据清洗,将属性值为null和""的去掉,其他字段名和属性值存入map集合
|
* requestParameters 为要转换为键值对的对象
|
* dynamicPara 转换后的键值对添加到的目标集合
|
*/
|
public static void objectToMap(Object requestParameters,Map<String, String> dynamicPara) throws IllegalAccessException {
|
// 获取f对象对应类中的所有属性域
|
Field[] fields = requestParameters.getClass().getDeclaredFields();
|
for (Field field : fields) {
|
String varName = field.getName();
|
// 获取原来的访问控制权限
|
boolean accessFlag = field.isAccessible();
|
// 修改访问控制权限
|
field.setAccessible(true);
|
// 获取在对象f中属性fields[i]对应的对象中的变量
|
Object obj = field.get(requestParameters);
|
if (obj != null && StringUtils.isNotBlank(obj.toString()) || CollectionUtil.isNotEmpty((Iterable<?>) obj)) {
|
dynamicPara.put(varName, obj.toString());
|
// 恢复访问控制权限
|
field.setAccessible(accessFlag);
|
}
|
}
|
}
|
}
|