我最近从 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>