用java请求接口使用post请求,json格式

项目中用到双层map存储数据,在转换json的过程中,首先是出现双层map转换json出现问题,在这里,我查了好久,然后找到解决方法:
String jsons = JSON.toJSONString(map); String params = StringEscapeUtils.unescapeJava(jsons);
上面代码中,map是双层map数据,重点是第二句,才转换成功,但是在转换之后,发现转换出来的格式不正确,多了一对双引号:

转换前:{sign=39CC9AED395C0AE4E831F592EBBCB451, params={appKey=E39854D25C234300BCA26774205DE545, timestamp=1575352832709}}
转换后:{"sign":"39CC9AED395C0AE4E831F592EBBCB451","params":“{"appKey":"E39854D25C234300BCA26774205DE545","timestamp":"1575352832709"}”}

多了一对双引号,在网上找了好久,这个问题没有找到解决方案,然后想起来之前在解决上一个问题的时候,有提到SortedMap<String, Object>,第二个定义为obj,不给明确定义,这样的话,后续都可以有更多的可能去操作,因为在之后是我将第一层map转换json后,存入的map。这里第二个变量obj就起到作用了,在用obj之前,是没有办法直接在map中存放map 的,我第二个变量用obj之后,第一个map就直接放在了里面,这样的话就是在后续只做了一个json转换,这样就解决了多一层双引号的问题,解决后,考虑可能是因为第一次map转换后,放入map,再进行转换,会将第一个map当作一个value值放入,因此引发的以上问题,下面贴代码,仅解决转换问题。

public String getToken() throws ParseException, IOException {
		SortedMap<String, Object> map = new TreeMap<>(new Comparator<String>() {
			public int compare(String obj1, String obj2) {
				// 降序排序
				return obj2.compareTo(obj1);
			}
		});
		SortedMap<String, String> map2 = new TreeMap<>();
		map2.put("appKey", appkey);
		map2.put("timestamp", time);
		String sign = md5Service.createSign(map2, appSecret);
		//String json = JSON.toJSONString(map2);
		map.put("params", map2);
		map.put("sign", sign);
		String jsons = JSON.toJSONString(map);
		String params = StringEscapeUtils.unescapeJava(jsons);
		String token = HttpClientUtil.sendPost(URL, map);
		//System.out.println(params);
		return token;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值