RestTemplate:如何获得通用List响应

时间:2016-03-07 00:19:31

标签: java spring-boot resttemplate

我们在commons包中使用restemplate用于我们的应用程序。所以我们需要使用泛型类型。

我读了很多关于这方面的解决方案,但似乎没有一个对我们有效,而且我们经常得到(在客户端):

java.util.LinkedHashMap cannot be cast to nc.gouv.dsf.ranch.model.Pays

这是代码(总结):

public List<T> findAll(C criteria) {
[...]
                ResponseEntity<List<T>> response = 
                    restTemplateFactory.getRestTemplate().exchange(
                            url, 
                            HttpMethod.GET, 
                    new HttpEntity<>(createHttpHeaders(srvId)),
                    new ParameterizedTypeReference<List<T>>() {}
                            );          

            return response.getBody();
}

我虽然ParameterizedTypeReference解决了这类问题,但它不起作用。

PS:我们使用的是springboot 1.3.1.RELEASE

1 个答案:

答案 0 :(得分:0)

似乎请求正在返回一个Map,我们正在尝试将其转换为列表,因此异常。你能尝试以下方法:

ResponseEntity<Map<String, Object>> response = 
            restTemplateFactory.getRestTemplate().exchange(
                    url, 
                    HttpMethod.GET, 
            new HttpEntity<>(createHttpHeaders(srvId)),
            new ParameterizedTypeReference<Map<String, Object>>() {}
                    );