Недавно я перешел с Джерси 1.X на Jersey 2.1 и использовал jersey-media-json-jackson для (де-) сериализации для Json.Список Deserialize с Джексоном в JUnit (Джерси-клиент)
В моем тесте JUnit я хотел бы использовать веб-службу, которая возвращает список. С Jerey 1.x Я работал с GenericType. Тем не менее, феллинг код не работает с Джерси 2.1/Джексон 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>.
Сериализация это нормально, так как следующий код:
цели ("место нахождения") .request() принимают (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>