假设有这样一个类,该类是某个接口的返回值类型。
public class Wrapper<T> {
private String message;
private T data;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}
这时候用常规的restTemplate.getForObject是行不通的。
restTemplate.getForObject(url, classType, params)
我们可以用restTemplate. exchange来实现。
Wrapper<Model> response = restTemplate.exchange(loginUrl,
HttpMethod.GET,
null,
new ParameterizedTypeReference<Wrapper<Model>>() {}).getBody();
其实还有一种方式处理这个问题。就是把返回值转为json字串,然后再把得到的json字串给转换为实际需要的类型。说着有些抽象,直接上个例子。还用上面的例子吧。
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(restTemplate.getForObject(url, String.class, param),
mapper.getTypeFactory().constructParametricType(Wrapper.class, T.class));
参考http://blog.youkuaiyun.com/amosryan/article/details/54019479
下面是stackoverflow网站是关于这个问题的一个讨论贴地址