You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.0 KiB
61 lines
2.0 KiB
package com.ynxbd.wx.wxfactory.utils;
|
|
|
|
import com.ynxbd.common.helper.common.ErrorHelper;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLEncoder;
|
|
import java.util.ArrayList;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
@Slf4j
|
|
public class MapHelper {
|
|
|
|
/**
|
|
* map 排序
|
|
* @param map map
|
|
* @return map
|
|
*/
|
|
public static Map<String, Object> order(Map<String, Object> map) {
|
|
Map<String, Object> orderMap = new LinkedHashMap<>();
|
|
|
|
List<Map.Entry<String, Object>> infoIds = new ArrayList<>(map.entrySet());
|
|
infoIds.sort((a, b) -> ((Object) a.getKey()).toString().compareTo(b.getKey()));
|
|
|
|
for (Map.Entry<String, Object> item : infoIds) {
|
|
orderMap.put(item.getKey(), item.getValue());
|
|
}
|
|
return orderMap;
|
|
}
|
|
|
|
// 参数拼接
|
|
public static String mapJoin(Map<String, Object> map, boolean keyLower, boolean isUrlEncode) {
|
|
StringBuilder sb = new StringBuilder();
|
|
try {
|
|
String key;
|
|
Object value;
|
|
for (Map.Entry<String, Object> item : map.entrySet()) {
|
|
key = item.getKey();
|
|
if ("".equals(key)) {
|
|
continue;
|
|
}
|
|
key = key.endsWith("_") && key.length() > 1 ? key.substring(0, key.length() - 1) : key;
|
|
value = item.getValue();
|
|
if (value == null) {
|
|
value = "";
|
|
}
|
|
sb.append(keyLower ? key.toLowerCase() : key).append("=").append(isUrlEncode ? URLEncoder.encode(value.toString(), "utf-8").replace("+", "%20") : value).append("&");
|
|
}
|
|
} catch (UnsupportedEncodingException e) {
|
|
ErrorHelper.println(e);
|
|
}
|
|
String params = sb.toString();
|
|
if (params.length() > 1) {
|
|
return params.substring(0, params.length() - 1);
|
|
}
|
|
return sb.toString();
|
|
}
|
|
|
|
}
|
|
|