欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 使用RestTemplate发送post请求,入参是多层嵌套的JSON

使用RestTemplate发送post请求,入参是多层嵌套的JSON

2025/2/22 2:11:31 来源:https://blog.csdn.net/qsbbl/article/details/143401597  浏览:    关键词:使用RestTemplate发送post请求,入参是多层嵌套的JSON

本文展示了一个完整的调用示例,入参、返参均是多层嵌套的JSON。

入参json
{"parameter": {"a": "a","b": "b","c": {"c1": "c1","c2": "c2","c3":"c3"}}
}

能看出来吧,入参有:parameter、c、c1三层,是多层嵌套的。

返参json
{"parameter": {"code": "0000","desc": "成功","result": [{"m": [],"n": [{"n1": "123","n2": "456"},{"n1": "789","n2": "678"}]}]}
}

处理思路是:先判断code是否为‘0000’,如果是,则将result以String的格式返回给前端。

代码实现
 //1、拼接入参Map queryMap = new HashMap();queryMap.put("c1", c1);queryMap.put("c2", c2);queryMap.put("c3", c3);Map paramMap = new HashMap();paramMap.put("a", a);paramMap.put("b", b);paramMap.put("c", queryMap);Map paramResult = new HashMap();paramResult.put("parameter", paramMap);HttpHeaders headers = new HttpHeaders();headers.add("Content-Type", "application/json");headers.add("apiKey", apiKey);HttpEntity < String > entity = new HttpEntity < > (paramResult.toString(), headers);//2、请求RestTemplate restTemplate = new RestTemplate();String response = restTemplate.postForObject("url", entity, String.class);//3、处理返参JSONObject jsonObject = new JSONObject(response);JSONObject parameter = jsonObject.getJSONObject("parameter");Object state = parameter.get("code");if(state.equals("0000")){result = parameter.getString("result");}return result;
备注

1、postForObject和postForEntity的区别?
postForEntity返回的信息更多,包括状态码、响应头等信息。一般情况下使用postForObject即可。
postForObject的返回值就是上方的“返参JSON”,postForEntity的是如下,看起来是一些没啥用的信息。

<200 OK,{ "parameter" : { "code" : "0000" , "desc" : "成功" , "result" : [ { "m" : [], "n" : [ { "n1" : "123" , "n2" : "456" }, { "n1" : "789" , "n2" : "678" } ] } ] } },{Content-Type=[text/json;charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Date=[Thu, 31 Oct 2024 06:52:39 GMT], X-Kong-Upstream-Latency=[7], X-Kong-Proxy-Latency=[10844], Via=[kong/2.0.1]}>

2、我看到一种说法是:在RestTemplate.post()中如果要使用map,只能使用LinkedMultiValueMap,通过实践发现并不是这样,使用普通map即可。
当然,除了map,还能使用JSONObject等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词