java把map转成url参数拼接

在工作中我们经常会把一个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.guavagroupId>
  <artifactId>guavaartifactId>
  <version>28.1-jreversion>
dependency>
public static String asUrlParams(Map<String, String> source){
	// TODO 如果要编码的话自己加下编码逻辑
    return Joiner.on("&")
            // 用指定符号代替空值,key 或者value 为null都会被替换
            .useForNull("")
            .withKeyValueSeparator("=")
            .join(source);
}

Joiner 对应的还有一个 Splitter,可以把 url 切割成 map,感兴趣的可以了解一下。
如果帮到你了,请点击右上角给个赞吧!!

我的个人博客地址:点击这里

你可能感兴趣的:(笔记)