在工作中我们经常会把一个java map
转成url
参数字符串,这里展示两种做法。如果您想要的结果是需要自然排序的,可借助TreeMap
实现。
方法1,不借助第三方工具包:
/**
* 只要确保你的编码输入是正确的,就可以忽略掉 UnsupportedEncodingException
*/
public static String asUrlParams(Map<String, String> source){
Iterator<String> it = source.keySet().iterator();
StringBuilder paramStr = new StringBuilder();
while (it.hasNext()){
String key = it.next();
String value = source.get(key);
if (StringUtils.isBlank(value)){
continue;
}
try {
// URL 编码
value = URLEncoder.encode(value, "utf-8");
} catch (UnsupportedEncodingException e) {
// do nothing
}
paramStr.append("&").append(key).append("=").append(value);
}
// 去掉第一个&
return paramStr.substring(1);
}
方法2,借助guava包的工具类:
mavne 引入 guava:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.1-jre</version>
</dependency>
public static String asUrlParams(Map<String, String> source){
// TODO 如果要编码的话自己加下编码逻辑
return Joiner.on("&")
// 用指定符号代替空值,key 或者value 为null都会被替换
.useForNull("")
.withKeyValueSeparator("=")
.join(source);
}
Joiner 对应的还有一个 Splitter,可以把 url 切割成 map,感兴趣的可以了解一下。
如果帮到你了,请点击右上角给个赞吧!!
我的个人博客地址:点击这里