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);
            
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM