RestTemplate服务间调用JSON嵌套数组被转为对象问题咨询
RestTemplate跨微服务调用JSON结构异常问题
在同一OpenShift集群的两个微服务间,使用RestTemplate进行服务调用时遇到JSON数据结构异常:
- 初始用
Map作为返回类型时,源JSON中的顶层数组字段c被转为单个对象,数组内其他元素丢失; - 改用
JsonNode作为返回类型后,顶层数组恢复正常,但嵌套的params数组(当前仅含一个元素)仍被转为单个对象。
该JSON数据来自第三方API,未来params数组可能包含多个元素,现有代码存在崩溃风险。
相关代码示例
源服务代码
responseEntity = this.restTemplateAnsible().exchange(ansiblePBNamesUrl + repoName, HttpMethod.GET, request, Map.class); LOGGER.info("responseEntity in callAnsiblePlaybookNamesList: {}", responseEntity); // 此处打印嵌套JSON Map<String, Object> mapResponse = responseEntity.getBody(); return mapResponse;
目标服务初始代码
ResponseEntity<Map<String, Object>> responseEntity = restTemplate .exchange(cmtServiceAPIName + ansibleServiceUrl, HttpMethod.POST, request, mapClass); LOGGER.info("responseEntity: " + responseEntity);
目标服务修改后代码
ResponseEntity<JsonNode> responseEntity = restTemplate .exchange(cmtServiceAPIName + ansibleServiceUrl, HttpMethod.POST, request, JsonNode.class);
内容的提问来源于stack exchange,提问作者Ramya
相关产品推荐
相关产品推荐

