package com.videtek.vacp.common.utils;
import com.videtek.vacp.common.StringUtils;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* @author hehaifeng
* @date 2018-4-28 09:44:41
* @version 1.0
* 用於將對象中不爲null 和 ‘’ (空串) 的屬性,轉化成Map集合
* 如果值的前後有空格 還會去除掉
* 對傳遞的數值 進行清洗,只傳遞有值得屬性,提高系統效率,減少帶寬佔用
*/
public class ObjectToMapUtil {
/**
* 對傳入的對象進行數據清洗,將屬性值爲null和""的去掉,其他字段名和屬性值存入map集合
*/
public static Map<String,String> objectToMap(Object requestParameters) throws IllegalAccessException {
Map<String, String> map = new HashMap<>();
// 獲取f對象對應類中的所有屬性域
Field[] fields = requestParameters.getClass().getDeclaredFields();
for (int i = 0, len = fields.length; i < len; i++) {
String varName = fields[i].getName();
// 獲取原來的訪問控制權限
boolean accessFlag = fields[i].isAccessible();
// 修改訪問控制權限
fields[i].setAccessible(true);
// 獲取在對象f中屬性fields[i]對應的對象中的變量
Object o = fields[i].get(requestParameters);
if (o != null && StringUtils.isNotBlank(o.toString().trim())) {
map.put(varName, o.toString().trim());
// 恢復訪問控制權限
fields[i].setAccessible(accessFlag);
}
}
return map;
}