Jersey使用Jackson将对象转换为JSON格式 。 在本教程中,我们向您展示如何将“ Track”对象转换为JSON格式,并将其返回给用户。
1.依赖
为了使Jersey支持JSON映射,请在Maven pom.xml
文件中声明“ jersey-json.jar ”。
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.8</version>
</dependency>
注意
在项目类路径中查看下载的依赖项,其中包含Jackson和相关的库。
2.将JSON与Jersey集成
在web.xml
,在Jersey映射的servlet中将“ com.sun.jersey.api.json.POJOMappingFeature
”声明为“ init-param
”。 这将使Jersey支持JSON /对象映射。
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
文件:web.xml –完整示例。
<web-app ...>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.mkyong.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
3.简单对象
一个简单的“ Track”对象,后来的Jersey将其转换为JSON格式。
package com.mkyong;
public class Track {
String title;
String singer;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
@Override
public String toString() {
return "Track [title=" + title + ", singer=" + singer + "]";
}
}
4. JAX-RS与Jersey
使用@Produces(MediaType.APPLICATION_JSON)
注释该方法。 Jersey将使用Jackson来自动处理JSON转换。
package com.mkyong.rest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.mkyong.Track;
@Path("/json/metallica")
public class JSONService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Track getTrackInJSON() {
Track track = new Track();
track.setTitle("Enter Sandman");
track.setSinger("Metallica");
return track;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createTrackInJSON(Track track) {
String result = "Track saved : " + track;
return Response.status(201).entity(result).build();
}
}
5.演示
有关GET和POST请求的信息,请参见演示。
1. GET方法
当请求URI模式“ / json / metallica / get ”时,Metallica经典歌曲“ Enter Sandman”将以JSON格式返回。
{
"singer":"Metallica",
"title":"Enter Sandman"
}
2. POST方法
要测试发布请求,您可以创建一个RESTful客户端(请参考此Jersey客户端API示例 ),然后将json格式字符串“发布”到URI模式“ / json / metallica / post ”,发布的json字符串将转换为“自动跟踪”对象。
下载源代码
下载它– JSON-Support-Jersey-Example.zip (7 KB)
参考文献
翻译自: https://mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/