如何使用jackson在resfull java项目上回馈JSON?
在关于在java中创建rest项目的文章http://www.vogella.com/tutorials/REST/article.html(8.4。创建客户端)之后,它说返回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 :(得分:4)
JacksonFeature
来自泽西岛的图书馆(Maven中的jersey-media-json-jackson神器),而不是杰克逊。请参阅文档here。这是一种告诉Jersey&#34的方法;请使用Jackson库进行JSON解析和序列化",并且不是Jackson的一部分。
这似乎只是让泽西岛使用杰克逊的方法之一。 This article声明将以下XML放在pom.xml中足以让Jersey使用Jackson。它还表明这是一种更好的方式,并且泽西文档可能错误地鼓励使用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 :(得分:0)
org.glassfish.jersey.jackson.JacksonFeature中的JacksonFeature
必要。
jersey-media-json-jackson-2.23.2.jar
jersey-entity-filtering-2.23.2.jar
答案 2 :(得分:-1)
通过Gradle构建项目并添加以下依赖项: 编译&#39; org.glassfish.jersey.media:jersey-media-json-jackson:2.25.1&#39;