假设有这样一个类,该类是某个接口的返回值类型。
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.csdn.net/amosryan/article/details/54019479
下面是*网站是关于这个问题的一个讨论贴地址