jackson 反序列化泛型
springboot默认使用jackson序列化和反序列化,在使用RestTemplate
接收响应时,有时需要反序列化为泛型,观察RestTemplate的exchange
方法,有个ParameterizedTypeReference
参数用来支持泛型
public <T> ResponseEntity<T> exchange(URI url, HttpMethod method, @Nullable HttpEntity<?> requestEntity,
ParameterizedTypeReference<T> responseType);
比如可以这样
// 泛型为接口返回数据的类型
ParameterizedTypeReference<CommonResult<User>> responseBodyType =
new ParameterizedTypeReference<CommonResult<User>>() {
};
ResponseEntity<CommonResult<User>> responseEntity = restTemplate.exchange(uri,
HttpMethod.POST, request, responseBodyType);
注意必须使用exchange
方法,只有exchange方法有org.springframework.core.ParameterizedTypeReference
参数。
fastjson 反序列化泛型
使用com.alibaba.fastjson.TypeReference#TypeReference()
//String jsonStr = ""
JSON.parseObject(jsonStr,new TypeReference<CommonResult<User>>(){
})