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 convertDataMap(HttpServletRequest request) { Map properties = request.getParameterMap(); Map returnMap = new HashMap(); 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 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); // 恢复访问控制权限 field.setAccessible(accessFlag); } } } }