zoukankan      html  css  js  c++  java
  • restTemplate.postForObject restTemplate.postForEntity java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx POST请求

    1.restTemplate调用的两种方式及获取字符串转换对象model的处理,统一按接收字符串,然后gson转换为对象的方式。

    ResponseData对象包含的属性
    private String resCode;
    private String resMsg;
    private T data;

    
    

    import java.lang.reflect.Type;
    import com.google.common.reflect.TypeToken;
    import com.google.gson.Gson;


    @Test
    public void testPost1() { String url = "http://IP:PORT/"; String memNo = "111"; ReqVO reqVo = new ReqVO(); reqVo.setMemNo(memNo); String json = restTemplate.postForObject(url, reqVo, String.class); log.info("string = " + json); //java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx // ResponseData<OpenInfoStatusVO> responseEntity =  new Gson().fromJson(json, ResponseData.class); //这个是关键 Type type = new TypeToken<ResponseData<MyResponseInfoStatusVO>>() {}.getType(); ResponseData<MyResponseInfoStatusVO> responseEntity = new Gson().fromJson(json, type); if (responseEntity == null || responseEntity.getData() == null) { log.info("postForEntity null,params memNo=[{}]",memNo); }else { MyResponseInfoStatusVOstatusVo = (MyResponseInfoStatusVO) responseEntity.getData(); log.info("postForEntity ok,result=[{}],params memNo=[{}]",GsonUtils.toJson(statusVo),memNo); } }
    import java.lang.reflect.Type;
    import com.google.common.reflect.TypeToken;
    import com.google.gson.Gson;
    
    
    @Test
        public void testPost2() {
            String url = "http://IP:PORT/";
            String memNo = "222";
            ReqVO reqVo = new ReqVO();
            reqVo.setMemNo(memNo);
    //区别点
            ResponseEntity<String> response = restTemplate.postForEntity(url, reqVo, String.class);
            log.info("string = " + GsonUtils.toJson(response));
            
            //java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to xxx
    //        ResponseData<MyResponseInfoStatusVO> responseEntity =  new Gson().fromJson(response.getBody(), ResponseData.class);
    
    //这个是关键
            Type type = new TypeToken<ResponseData<MyResponseInfoStatusVO>>() {}.getType();
            
            ResponseData<MyResponseInfoStatusVO> responseEntity = new Gson().fromJson(response.getBody(), type);
            
       
            if (responseEntity == null || responseEntity.getData() == null) {
                log.info("postForEntity null,params memNo=[{}]",memNo);
            }else {
                MyResponseInfoStatusVOstatusVo = (MyResponseInfoStatusVO) responseEntity.getData();
                log.info("postForEntity ok,result=[{}],params memNo=[{}]",GsonUtils.toJson(statusVo),memNo);
                
            }
        }
  • 相关阅读:
    k8s1.13.0二进制部署-Dashboard和coredns(五)
    一、服务器简介
    Java检测端口的占用情况
    GreenMail邮件测试服务器
    PowerMock简单使用
    源码-集合:ArrayList
    Maven初步接触
    Java测试工具和框架
    Git初步
    java+搜索引擎
  • 原文地址:https://www.cnblogs.com/oktokeep/p/13326984.html
Copyright © 2011-2022 走看看