Json 用JUnit中的Jackson反序列化列表(Jersey客户端)

Json 用JUnit中的Jackson反序列化列表(Jersey客户端),json,jaxb,jackson,jersey-client,Json,Jaxb,Jackson,Jersey Client,我最近从Jersey 1.X迁移到Jersey 2.1,并使用Jersey media json jackson(反)序列化为json 在JUnit测试中,我希望使用一个返回列表的web服务。 对于Jerey1.x,我曾经使用GenericType。但是,福林代码不适用于Jersey 2.1/Jackson 2.1: GenericType<Collection<String>> listType = new GenericType<Collection<St

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

在JUnit测试中,我希望使用一个返回列表的web服务。 对于Jerey1.x,我曾经使用GenericType。但是,福林代码不适用于Jersey 2.1/Jackson 2.1:

GenericType<Collection<String>> listType = new GenericType<Collection<String>>() {};
assertTrue(target("location").request().get(listType).contains("item"));
GenericType listType=新的GenericType(){};
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>.
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:
找不到媒体类型为application/json的MessageBodyReader,
type=interface java.util.List,genericType=java.util.Collection。
序列化是可以的,因为以下代码:

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>

org.glassfish.jersey.core
泽西公地
2.1
org.glassfish.jersey.core
泽西服务器
2.1
org.glassfish.jersey.containers
jersey容器servlet
2.1
org.glassfish.jersey.media
泽西媒体公司
2.1

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

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