杰克逊客户端读取通用List <t>方法不起作用

时间:2015-10-30 17:55:10

标签: java jax-rs

我有一个jax-rs 2.0客户端,它试图读取类型为t的通用列表。而不是创建类型为t的列表,而是创建LinkedHashMap类型的列表

public static <T> List<T> getList(Builder reqeustBuilder, Class<T> t) {

        Response response = reqeustBuilder.get();
        List<T> responseEntityList =  response.readEntity(new GenericType<List<T>>(){});
        return responseEntityList;

}

我在这里找到了一个解决方法:Jackson generic json to List<T> converter method does not work但是我想弄清楚为什么上面的代码不起作用以及是否有办法解决它。

更新 我在这里找到了另一个解决方案:Dropwizard deserializing generic list from JerseyClient

我想知道是否有更简单的事情。我不明白为什么在这种情况下T == Object而不是传递的类型。

1 个答案:

答案 0 :(得分:4)

首先,你有一个错字。

public static <T> List<T> getList(Builder reqeustBuilder, Class<T> t) {

应该是

public static List<T> getList(Builder reqeustBuilder, Class<T> t) {

其次,返回类型LinkedHashMap的原因是因为这是函数readEntity在以下行中返回的数据结构类型:

List<T> responseEntityList =  response.readEntity(new GenericType<List<T>>(){});