【问题标题】:Deserialize List with Jackson in JUnit (Jersey Client)在 JUnit 中使用 Jackson 反序列化列表(Jersey 客户端)
【发布时间】:2013-07-30 19:04:54
【问题描述】:

我最近从 Jersey 1.X 迁移到 Jersey 2.1,并使用 jersey-media-json-jackson 进行(反)序列化为 Json。

在我的 JUnit-Test 中,我想使用一个返回列表的 Web 服务。 在 Jerey 1.x 中,我曾经使用 GenericType。但是,以下代码不适用于 Jersey 2.1 / Jackson 2.1:

GenericType<Collection<String>> listType = new GenericType<Collection<String>>() {};
assertTrue(target("location").request().get(listType).contains("item"));

它崩溃了

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: 
MessageBodyReader not found for media type=application/json, 
type=interface java.util.List, genericType=java.util.Collection<java.lang.String>.

序列化没问题,因为下面的代码:

target("location").request().accept(MediaType.APPLICATION_JSON).get(String.class);

返回一个有效的 Json 字符串

任何想法如何解决?任何工作示例?


版本:

    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-json-jackson</artifactId>
        <version>2.1</version>
    </dependency>

【问题讨论】:

    标签: json jaxb jackson jersey-client


    【解决方案1】:

    可能为时已晚,您找到了解决方案,但这里是为可能遇到相同问题的其他人准备的。确保在创建客户端之前在客户端配置上注册 JacksonFeature,代码示例如下。

    ClientConfig cc = new ClientConfig().register(new JacksonFeature());
    Client client = ClientBuilder.newClient(cc);
    WebTarget target = client.target(url);
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 2013-02-13
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      相关资源
      最近更新 更多