jackson deserialization generics
Springboot uses jackson serialization and deserialization by default. When RestTemplate
receiving responses, sometimes it needs to be deserialized into generics. Observe exchange
the method of RestTemplate. There is a ParameterizedTypeReference
parameter to support generics
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType);
Like this
// 泛型为接口返回数据的类型
ParameterizedTypeReference<CommonResult<User>> responseBodyType =
new ParameterizedTypeReference<CommonResult<User>>() {
};
ResponseEntity<CommonResult<User>> responseEntity = restTemplate.exchange(uri,
HttpMethod.POST, request, responseBodyType);
Note that exchange
methods must be used, only the exchange method has org.springframework.core.ParameterizedTypeReference
parameters.
fastjson deserialization generics
usecom.alibaba.fastjson.TypeReference#TypeReference()
//String jsonStr = ""
JSON.parseObject(jsonStr,new TypeReference<CommonResult<User>>(){
})