2016-09-12 2 views
1

Как вернуть JSON на проект javasful resfull с помощью jackson? (. 8.4 Создание клиента)Как зарегистрировать JacksonFeature на ClientConfig

После статьи http://www.vogella.com/tutorials/REST/article.html о создании проекта отдыха в Java, он говорит, что возвращение JSON проследовать как:

public class TodoTest { 

    public static void main(String[] args) { 
    ClientConfig config = new new ClientConfig().register(JacksonFeature.class); 
    Client client = ClientBuilder.newClient(config); 

    WebTarget target = client.target(getBaseURI()); 
    System.out.println(target.path("rest").path("todo").request() 
     .accept(MediaType.APPLICATION_JSON).get(String.class)); 
    } 

    private static URI getBaseURI() { 
    return UriBuilder.fromUri("http://localhost:8080_com.vogella.jersey.jaxb").build(); 
    } 
} 

@XmlRootElement 
public class Todo { 
    private String id; 
    private String summary; 
    private String description; 
    //getter/setter 
} 

Но JacksonFeature.class не в Jackson.jar. Я использую

jackson-annotations-2.8.2.jar 
jackson-core-2.8.2.jar 
jackson-databind-2.8.2.jar 
jackson-jaxrs-base-2.8.2.jar 
jackson-jaxrs-json-provider-2.8.2.jar 
jackson-module-jaxb-annotations-2.8.2.jar 

Как я мог решить эту проблему?

ответ

0

JacksonFeature в org.glassfish.jersey.jackson.JacksonFeature

Необходимые.

jersey-media-json-jackson-2.23.2.jar 
jersey-entity-filtering-2.23.2.jar 
2

JacksonFeature от множества Джерси библиотек (джерси-медиа-JSON-джексон артефакт в Maven), а не Джексон. См. Документацию here. Это способ сказать Джерси «пожалуйста, используйте библиотеки Джексона для разбора и сериализации JSON» и не является частью Jackson.

Кажется, это только один из способов заставить Джерси использовать Джексона. This article заявляет, что размещение следующего XML в вашем pom.xml достаточно, чтобы заставить Джерси использовать Джексона. Это также говорит о том, что это лучший способ и что документация Джерси может быть неправильной, чтобы поощрять использование JacksonFeature.class. Связанная статья также рекомендует вам НЕ использовать jersey-media-json-jackson.

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-databind</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.jaxrs</groupId> 
    <artifactId>jackson-jaxrs-json-provider</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 
-1

Создайте свой проект с помощью Gradle и добавьте следующую зависимость: компиляции '' org.glassfish.jersey.media:jersey-media-json-jackson:2.25.1