在使用spring boot寫接口時,有時會遇到簽名的情況,會計算sign值之類的,我們的值計算中,就涉及到了將參數和參數值,按照“k1=v1&k2=v2....”格式拼接,也就是“參數=值&參數=值...”。我采用的思路如下:
- 將參數和參數值,put進一個map中
- 將map中的元素進行按照格式拼接
Map<String, String> paraMap = new TreeMap();
// 將參數放在map中
paraMap.put("k1", v1);
paraMap.put("k2", v2);
paraMap.put("k3", v3);
System.out.println("請求參數:" + paraMap);
// 將鍵值對用&連接
String prestr = "";
for (Map.Entry<String, String> entry : paraMap.entrySet()) {
prestr = prestr + entry + "&";
}}
這種方法的缺點就是,最后一個參數值后面還會再有一個"&"。但是,我們項目中用的簽名組裝字符串,后面還會再加其他的計算參數,所以對我來說,這種方法就可以使用。
如果你不想要字符串的最后的"&",推薦一個另一個博主的方法,也是可以的:https://www.cnblogs.com/angusbao/p/7728513.html
List<String> keys = new ArrayList<String>(paraMap.keySet());
Collections.sort(keys);
String prestr = "";
for (int i = 0; i < keys.size(); i++) {
String key = keys.get(i);
Object value = paraMap.get(key);
if (i == keys.size() - 1) {//拼接時,不包括最后一個&字符
prestr = prestr + key + "=" + value;
}else {
prestr = prestr + key + "=" + value + "&";}
}
