侧边栏壁纸
博主头像
侯秀荣

贪婪和恐惧是人性的两大弱点,
人类几万年,人性也没进步1厘米。

  • 累计撰写 172 篇文章
  • 累计收到 3 条评论

拼接json格式成post请求URL

2017-8-19 / 0 评论 / 1986 阅读

说明:将json格式的字符拼接成需要的url post请求

1.json格式的字符


{<br />
&nbsp; "notifyStr": {<br />
&nbsp; &nbsp; "charset": "utf-8",<br />
&nbsp; &nbsp; "biz_content": "{\"mer_id\":\"02360\",\"bank_disc_amt\":0,\"mer_disc_amt\":0,\"pay_time\":\"20170901\",\"attach\":\"\",\"cust_id\":\"GC75JOxg3UFjG\",\"order_id\":\"0209010780760\",\"out_trade_no\":\"P1708181ec800000001\",\"total_amt\":1,\"coupon_amt\":0,\"payment_amt\":1,\"card_no\":\"622202*********9149\",\"return_msg\":\"success\",\"ecoupon_amt\":0,\"total_disc_amt\":0,\"msg_id\":\"020099210780760\",\"point_amt\":0,\"return_code\":\"0\"}",<br />
&nbsp; &nbsp; "format": "json",<br />
&nbsp; &nbsp; "sign": "JdjqDJD71rur7a48e/conMlG0lY6sryvTmLDe9tA0EyxjpcspnvBhsafUTtTkdQ6fZ1Qqj2K+75ELFfCVmhdydeTLpXX27KmTNBRtO5euLLZEJjFx7XWT6UWK3kHlTcFbkAl+smNRfsfplg=",<br />
&nbsp; &nbsp; "from": "hou-api",<br />
&nbsp; &nbsp; "api": "/ui/thirdparty/order/V1/pay",<br />
&nbsp; &nbsp; "app_id": "100000036501",<br />
&nbsp; &nbsp; "sign_type": "RSA",<br />
&nbsp; &nbsp; "timestamp": "2017-08-18 18:48:14"<br />
&nbsp; },<br />
&nbsp; "serial": "P170ec800000001"<br />
}<br />
```<br />
<br />
### 2.将json转换为Java对象<br />
```bash<br />
public class NotifyReqDTO implements Serializable {<br />
&nbsp; &nbsp; &nbsp; &nbsp; private static final long serialVersionUID = -4715222968104483630L;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* 流水号<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; &nbsp; &nbsp; private String serial;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;* 格式报文<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; &nbsp; &nbsp; private Map&lt;String, String&gt; notifyStr;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; public String getSerial() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return serial;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; public void setSerial(String serial) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.serial = serial;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; public Map&lt;String, String&gt; getNotifyStr() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return notifyStr;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; public void setNotifyStr(Map&lt;String, String&gt; notifyStr) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.notifyStr = notifyStr;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
```<br />
<br />
### 3.拼接处理-java代码<br />
```bash<br />
package com.houxiurong.utils;<br />
<br />
import com.alibaba.fastjson.JSON;<br />
import org.slf4j.Logger;<br />
import org.slf4j.LoggerFactory;<br />
<br />
import java.util.ArrayList;<br />
import java.util.Collections;<br />
import java.util.List;<br />
import java.util.Map;<br />
<br />
/**<br />
&nbsp;* Created by houxiurong on 2017/8/14.<br />
&nbsp;*/<br />
public class SignUtils {<br />
<br />
&nbsp; &nbsp; private static Logger logger = LoggerFactory.getLogger(SignUtils.class);<br />
<br />
<span style="white-space:pre;"> </span>/**<br />
&nbsp; &nbsp; &nbsp;* 签参数组装<br />
&nbsp; &nbsp; &nbsp;*<br />
&nbsp; &nbsp; &nbsp;* @param params<br />
&nbsp; &nbsp; &nbsp;* @return<br />
&nbsp; &nbsp; &nbsp;*/<br />
&nbsp; &nbsp; public static String buildMapSignString(Map&lt;String, String&gt; params) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; List&lt;String&gt; keys = new ArrayList&lt;String&gt;(params.size());<br />
&nbsp; &nbsp; &nbsp; &nbsp; for (String key : params.keySet()) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ("sign".equals(key))<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; keys.add(key);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; Collections.sort(keys);<br />
&nbsp; &nbsp; &nbsp; &nbsp; StringBuilder buf = new StringBuilder();<br />
&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; keys.size(); i++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String key = keys.get(i);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String value = params.get(key);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (i == keys.size() - 1) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buf.append(key + "=" + value);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; buf.append(key + "=" + value + "&amp;");<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; return buf.toString();<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp;}<br />
```<br />
### 3.将上面的json转换为java对象,使用alibaba.fastjaon的JSON工具<br />
```bash<br />
public void static main(String[] args){<br />
&nbsp;<span style="white-space:pre;"> </span>String strObject ="{\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp;\"notifyStr\": {\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"charset\": \"utf-8\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"biz_content\": \"{\\\"mer_id\\\":\\\"02360\\\",\\\"bank_disc_amt\\\":0,\\\"mer_disc_amt\\\":0,\\\"pay_time\\\":\\\"20170901\\\",\\\"attach\\\":\\\"\\\",\\\"cust_id\\\":\\\"GC75JOxg3UFjG\\\",\\\"order_id\\\":\\\"0209010780760\\\",\\\"out_trade_no\\\":\\\"P1708181ec800000001\\\",\\\"total_amt\\\":1,\\\"coupon_amt\\\":0,\\\"payment_amt\\\":1,\\\"card_no\\\":\\\"622202*********9149\\\",\\\"return_msg\\\":\\\"success\\\",\\\"ecoupon_amt\\\":0,\\\"total_disc_amt\\\":0,\\\"msg_id\\\":\\\"020099210780760\\\",\\\"point_amt\\\":0,\\\"return_code\\\":\\\"0\\\"}\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"format\": \"json\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"sign\": \"JdjqDJD71rur7a48e/conMlG0lY6sryvTmLDe9tA0EyxjpcspnvBhsafUTtTkdQ6fZ1Qqj2K+75ELFfCVmhdydeTLpXX27KmTNBRtO5euLLZEJjFx7XWT6UWK3kHlTcFbkAl+smNRfsfplg=\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"from\": \"hou-api\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"api\": \"/ui/thirdparty/order/V1/pay\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"app_id\": \"100000036501\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"sign_type\": \"RSA\",\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp; &nbsp;\"timestamp\": \"2017-08-18 18:48:14\"\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp;},\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; " &nbsp;\"serial\": \"P170ec800000001\"\n" +<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "}";<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<br />
&nbsp;<span style="white-space:pre;"> </span>NotifyReqDTO notifyReqDTO = JSON.parseObject(strObject, NotifyReqDTO.class);<br />
&nbsp; &nbsp; String formatStr = SignUtils.buildMapSignString(params);<br />
&nbsp; &nbsp; System.out.println("formatStr:" + formatStr);<br />
&nbsp; &nbsp; String formatResponseStr = "/houxiurong/notify/" + NotifyReqDTO.getSerial() + "?" + formatStr;<br />
&nbsp; &nbsp; String houSign = SignUtils.getSign(NotifyReqDTO.getNotifyStr());<br />
&nbsp; &nbsp; System.out.println("formatStr:" + formatStr);<br />
}<br />
```<br />
原文来自:http://xrhou.github.io<span style="color:#555555;font-family:&quot;font-size:14px;white-space:normal;background-color:#FFFFFF;"><br />
</span>

评论一下?

OωO
取消