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