为什么Jersey / JAX-RS客户端无法处理泛型?

IAmYourFaja

我有一个Jersery / JAX-RS客户端,该客户端命中了RESTful API(JSON),该API应该返回我的POJO列表:

// Hits: GET localhost:8080/myapp/fizz/widget/{widget_id}
@Override
public List<Widget> getWidgetsByUser(Long id) {
    return webResource.path("fizz").path("widget").path(id.toString()).get(List.class);
}

和一个驱动程序,用于测试客户端:

public class Driver {
    public static void main(String[] args) {
        Driver d = new Driver();
        d.run();
    }

    public void run() {
        MyAppService myService = getSomehow();

        List<Widget> widgets = myService.getWidgetResource().getWidgetsByUser(2L);
        for(Widget widget : widgets) {
            System.out.println("\t...and it found Widget #" + widget.getCaseId());
        }
    }
}

运行此命令时,我得到:

Exception in thread "main" java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.me.myapp.Widget
    <stack trace omitted for brevity>

从for循环抛出异常:

for(Widget widget : widgets) {

这告诉我客户端正在工作,但是我没有正确配置它。

因此,Jersey尝试返回纯JSON,而不是尝试将其映射回Widget列表,或者我get(Class<?>)错误地调用了该方法。有任何想法吗?

保罗·萨姆索塔

Pavel Horal的评论是正确的。如果没有已知类型,Jackson(底层反序列化器)将映射到LinkedHashMap,因此它将返回List<LinkedHashMap>

使固定:

对于泛型类型,我们应该使用另一个get()方法,该方法带有一个GenericType参数。所以我们应该做类似的事情

...get(new GenericType<List<Widget>>(){});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Jersey和jax-rs有什么区别

来自分类Dev

如何使用Jersey(JAX-RS 2.0)客户端为内容编码启用gzip压缩?

来自分类Dev

为什么这个简单JAX RS示例不起作用?

来自分类Dev

异步JAX-RS的目的是什么

来自分类Dev

异步JAX-RS的目的是什么

来自分类Dev

如何使用JAX-RS标准客户端API处理来自Web服务的错误JSON内容类型?

来自分类Dev

JAX WS客户端无法认证

来自分类Dev

在JAX-RS 2.0客户端库中处理自定义错误响应

来自分类Dev

JAX-RS 2.0客户端-使用RESTEasy客户端发送多部分消息

来自分类Dev

使用JAX-RS 2.0客户端API的POST

来自分类Dev

Jersey / JAX-RS ExceptionMappers和继承

来自分类Dev

JAX-RS中的X代表什么?

来自分类Dev

在服务器上为PHP REST Web服务实现Jersey(JAX-RS)客户端库

来自分类Dev

Jersey客户端/ JAX-RS和可选(非默认)@QueryParam(客户端)

来自分类Dev

JAX RS客户端API拦截器

来自分类Dev

配置JAX-RS 2.0客户端API的代理

来自分类Dev

如何正确共享JAX-RS 2.0客户端

来自分类Dev

在JAX-RS客户端中读取Map实体

来自分类Dev

JAX-RS(Jersey),Bean验证,@ JsonIgnore

来自分类Dev

什么是JAX-RS / REST资源?

来自分类Dev

为什么JAX-WS是JDK的一部分,而JAX-RS不是呢?

来自分类Dev

IBM JAX-RS 2.0客户端和baseClients

来自分类Dev

为什么这个简单的JAX RS示例不起作用?

来自分类Dev

使用JAX-RS 2.0客户端API的POST

来自分类Dev

JAX-WS和JAX-RPC客户端故障处理

来自分类Dev

使用Jackson传递POJO作为实体的Jersey / JAX-RS客户端

来自分类Dev

在服务器上为PHP REST Web服务实现Jersey(JAX-RS)客户端库

来自分类Dev

邮递员客户端无法解析来自JAX-RS响应构建器的字符串响应

来自分类Dev

JAX-RS 客户端 PUT/POST 请求:无法访问正文中的实体(对象)

Related 相关文章

  1. 1

    Jersey和jax-rs有什么区别

  2. 2

    如何使用Jersey(JAX-RS 2.0)客户端为内容编码启用gzip压缩?

  3. 3

    为什么这个简单JAX RS示例不起作用?

  4. 4

    异步JAX-RS的目的是什么

  5. 5

    异步JAX-RS的目的是什么

  6. 6

    如何使用JAX-RS标准客户端API处理来自Web服务的错误JSON内容类型?

  7. 7

    JAX WS客户端无法认证

  8. 8

    在JAX-RS 2.0客户端库中处理自定义错误响应

  9. 9

    JAX-RS 2.0客户端-使用RESTEasy客户端发送多部分消息

  10. 10

    使用JAX-RS 2.0客户端API的POST

  11. 11

    Jersey / JAX-RS ExceptionMappers和继承

  12. 12

    JAX-RS中的X代表什么?

  13. 13

    在服务器上为PHP REST Web服务实现Jersey(JAX-RS)客户端库

  14. 14

    Jersey客户端/ JAX-RS和可选(非默认)@QueryParam(客户端)

  15. 15

    JAX RS客户端API拦截器

  16. 16

    配置JAX-RS 2.0客户端API的代理

  17. 17

    如何正确共享JAX-RS 2.0客户端

  18. 18

    在JAX-RS客户端中读取Map实体

  19. 19

    JAX-RS(Jersey),Bean验证,@ JsonIgnore

  20. 20

    什么是JAX-RS / REST资源?

  21. 21

    为什么JAX-WS是JDK的一部分,而JAX-RS不是呢?

  22. 22

    IBM JAX-RS 2.0客户端和baseClients

  23. 23

    为什么这个简单的JAX RS示例不起作用?

  24. 24

    使用JAX-RS 2.0客户端API的POST

  25. 25

    JAX-WS和JAX-RPC客户端故障处理

  26. 26

    使用Jackson传递POJO作为实体的Jersey / JAX-RS客户端

  27. 27

    在服务器上为PHP REST Web服务实现Jersey(JAX-RS)客户端库

  28. 28

    邮递员客户端无法解析来自JAX-RS响应构建器的字符串响应

  29. 29

    JAX-RS 客户端 PUT/POST 请求:无法访问正文中的实体(对象)

热门标签

归档