我遇到了 Spring 和 RestTemplate 的问题。我想发送一个包含通用数组的对象(ListResponse)。定义如下:
public class ListResponse<T> implements Serializable {
private long total;
private int page;
private int pageSize;
private T[] objects;
我使用restTemplate.getForObject()发送请求。结果,我得到了一个 ListResponse 类型的对象,但对象数组包含 LinkedHashMap 数组,而不是包含 T 类型对象的数组。
restTemplate 似乎无法将数组中的元素转换为正确的类型。
如何确保获得 T 类型的对象数组?
最佳答案
我今天遇到了这个问题,这是我想出的解决方案(实际上,这是我的一位同事建议的)。我们将它与返回 List
调用 RestTemplate 时,不要传入泛型类型。
定义:public class MyDtoListTemplate extends ListTemplate<MyDto>
然后,调用
MyDtoListTemplate template = restTemplate.getForObject("url", MyDtoListTemplate .class, mapOfPathVariables);
令人遗憾的是,您必须定义一个扩展/实现泛型类型的具体类,但随后 jackson 反序列化器可以使用泛型信息。
关于spring - Resttemplate无法解析类型T的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15922261/