泽西岛+杰克逊的JSON示例

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"
}
json jersey demo

2. POST方法
要测试发布请求,您可以创建一个RESTful客户端(请参考此Jersey客户端API示例 ),然后将json格式字符串“发布”到URI模式“ / json / metallica / post ”,发布的json字符串将转换为“自动跟踪”对象。

下载源代码

下载它– JSON-Support-Jersey-Example.zip (7 KB)

参考文献

  1. 杰克逊官方网站
  2. 泽西岛的JSON支持

翻译自: https://mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值