package com.nova.sankuai.domain.api.yinsheng; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import java.lang.reflect.Field; import java.util.*; @Slf4j public class CommonUtil { /** * map 转成 string * * @param map * @return */ public static String mapToString(Map map) { SortedMap sortedMap = new TreeMap<>(map); StringBuilder sb = new StringBuilder(); for (Map.Entry entry : sortedMap.entrySet()) { if (StringUtils.isBlank(entry.getValue())) { continue; } sb.append(entry.getKey()).append('=').append(entry.getValue()).append('&'); } sb.deleteCharAt(sb.length() - 1); return sb.length() == 0 ? "" : sb.toString(); } /** * 除去数组中的空值和签名参数 * * @param sArray 签名参数组 * @return 去掉空值与签名参数后的新签名参数组 */ public static Map paraFilter(Map sArray) { Map result = new HashMap<>(); if (sArray == null || sArray.size() <= 0) { return result; } for (String key : sArray.keySet()) { String value = sArray.get(key); if (value == null || StringUtils.isEmpty(value) || key.equalsIgnoreCase("sign")) { continue; } result.put(key, value); } return result; } /** * 遍历以及根据重新排序 * * @param sortedParams * @return */ public static String getSignContent(Map sortedParams) { StringBuffer content = new StringBuffer(); List keys = new ArrayList<>(sortedParams.keySet()); Collections.sort(keys); log.info("排序结果:" + keys.toString()); int index = 0; for (String key : keys) { String value = sortedParams.get(key); if (StringUtil.areNotEmpty(key, value)) { content.append((index == 0 ? "" : "&") + key + "=" + value); index++; } } return content.toString(); } public static Map objToMap(Object obj) { Map map = new HashMap<>(); Class clazz = obj.getClass(); System.out.println(clazz); for (Field field : clazz.getDeclaredFields()) { field.setAccessible(true); String fieldName = field.getName(); try { Object value = field.get(obj); if (value == null) { } else if (value instanceof String) { String valueStr = (String) value; if (StringUtil.isBlank(valueStr)) { continue; } map.put(fieldName, valueStr); } else { JSONObject jsonObject = (JSONObject) JSONObject.toJSON(value); Iterator iterator = jsonObject.keySet().iterator(); while (iterator.hasNext()) { String keyStr = iterator.next().toString(); if (StringUtil.isBlank(jsonObject.getString(keyStr))) { iterator.remove(); } } if (jsonObject.isEmpty()) { continue; } map.put(fieldName, jsonObject.toString()); } } catch (Exception e) { log.info("对象转map异常:" + e.getMessage()); } } return map; } public static Map SFFClassCToMap(Class clazz) { Map map = new HashMap<>(); System.out.println(clazz); for (Field field : clazz.getDeclaredFields()) { field.setAccessible(true); String fieldName = field.getName(); try { Object value = field.get(null); if (value == null) { } else if (value instanceof String) { String valueStr = (String) value; if (StringUtil.isBlank(valueStr)) { continue; } map.put(fieldName, valueStr); } else { JSONObject jsonObject = (JSONObject) JSONObject.toJSON(value); Iterator iterator = jsonObject.keySet().iterator(); while (iterator.hasNext()) { String keyStr = iterator.next().toString(); if (StringUtil.isBlank(jsonObject.getString(keyStr))) { iterator.remove(); } } if (jsonObject.isEmpty()) { continue; } map.put(fieldName, jsonObject.toString()); } } catch (Exception e) { log.info("对象转map异常:" + e.getMessage()); } } return map; } }