当前位置:   article > 正文

RestTemplate.postForObject泛型丢失返回LinkedHashMap问题解决_resttemplate.postforobject 泛型

resttemplate.postforobject 泛型

在使用RestTemplate.postForObject方法远程调用接口

返回的时候会自动转成LinkedHashMap,造成ClassCastException类型转换异常

  1. /**
  2. * post
  3. * @param url 请求地址
  4. * @param param 参数
  5. * @param returnClass 返回类型
  6. * @return
  7. */
  8. public <E> E postByDefault(String url, E param, Class<E> returnClass) {
  9. final HttpHeaders headers = new HttpHeaders();
  10. headers.setContentType(MediaType.APPLICATION_JSON);
  11. headers.set("Accept", "application/json");
  12. final HttpEntity<E> httpEntity = new HttpEntity<>(param, headers);
  13. return this.restTemplate.postForObject(url, httpEntity, returnClass);
  14. }

解决办法

第一种: 

  1. JSONObject object = restTemplateClient.postByDefault(url,param, JSONObject.class);
  2. SysUserInfo[] userInfos = object.getObject("data",SysUserInfo[].class);
  3. List<SysUserInfo> userInfoList = Arrays.asList(userInfos);

第二种:

  1. ParameterizedTypeReference<List<SysUserInfo>> typeRef = new ParameterizedTypeReference<List<SysUserInfo>>() {};
  2. ResponseEntity<List<SysUserInfo>> responseEntity = restTemplate.exchange(url, HttpMethod.POST, new HttpEntity<>(param), typeRef);
  3. List<SysUserInfo> userinfoList= responseEntity.getBody();

以上就是本文的全部内容,希望对大家的学习有所帮助,欢迎评论交流。能get到知识点不要忘了关注点个赞~ 拒绝白嫖从我们做起hh~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/127065
推荐阅读
相关标签
  

闽ICP备14008679号