在使用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 + "&";} }