多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# RESTEasy Jettison JSON 示例 > 原文: [https://howtodoinjava.com/resteasy/resteasy-jettison-json-example/](https://howtodoinjava.com/resteasy/resteasy-jettison-json-example/) [**RESTEasy**](http://resteasy.jboss.org/ "resteasy") 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 [**RESTful Web 服务**](//howtodoinjava.com/restful-web-service/ "RESTEasy tutorials")和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作。 [**Jettison**](https://github.com/jettison-json/jettison "Jettison") 是可读写 JSON 的 Java API(如 STaX 和 DOM)的集合。 它是使用编组和解组功能完成的。 在本文中,我演示了将 Jettison 与 RESTEasy 结合使用的方法,以将 API 响应转换为 json 格式。 **使用的环境:** 1. RESTEasy 2.3.1.GA 2. RESTEasy Jettison 供应器 2.3.1 3. Tomcat 7 4. JDK 1.6 请按照以下步骤构建演示应用。 **1)创建一个 Maven 项目并转换为 Eclipse Web 项目** ```java mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=RESTfulDemoApplication -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false mvn eclipse:eclipse -Dwtpversion=2.0 ``` **2)更新`pom.xml`中的运行时依赖项** ```java <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.howtodoinjava</groupId> <artifactId>RESTfulDemoApplication</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>RESTfulDemoApplication Maven Webapp</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>jboss</id> <url>http://repository.jboss.org/maven2</url> </repository> </repositories> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- core library --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>2.3.1.GA</version> </dependency> <dependency> <groupId>net.sf.scannotation</groupId> <artifactId>scannotation</artifactId> <version>1.0.2</version> </dependency> <!-- Jettison support --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jettison-provider</artifactId> <version>2.3.1.GA</version> </dependency> </dependencies> <build> <finalName>RESTfulDemoApplication</finalName> </build> </project> ``` **3)更新`web.xml`文件以实现 Resteasy 特定的 Servlet 映射** ```java <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- Auto scan REST service --> <context-param> <param-name>resteasy.scan</param-name> <param-value>true</param-value> </context-param> <servlet> <servlet-name>resteasy-servlet</servlet-name> <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher </servlet-class> </servlet> <servlet-mapping> <servlet-name>resteasy-servlet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> ``` **4)编写服务类和模型类** **`User.java`** ```java package com.howtodoinjava.model; import java.io.Serializable; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlAccessorType(XmlAccessType.NONE) @XmlRootElement(name = "user") public class User implements Serializable { private static final long serialVersionUID = 1L; @XmlAttribute(name = "id") private int id; @XmlElement(name = "firstName") private String firstName; @XmlElement(name = "lastName") private String lastName; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } ``` **`UserManagementModule.java`** ```java package com.howtodoinjava.service; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; import com.howtodoinjava.model.User; @Path("/user-management") public class UserManagementModule { @GET @Path("/users/{id}") @Produces("application/json") public Response getUserById(@PathParam("id") Integer id) { User user = new User(); user.setId(id); user.setFirstName("Lokesh"); user.setLastName("Gupta"); return Response.status(200).entity(user).build(); } } ``` **5)运行应用** 当我们在 tomcat 中部署上述构建的应用并单击 URL:`http://localhost:8080/RESTfulDemoApplication/user-management/users/10`时,以下是响应。 ![RESTEasy + Jettison example](https://img.kancloud.cn/0e/db/0edb99861b1d18b74957b3bababd8f4c_949x436.png) RESTEasy + Jettison 示例 学习愉快! [源码下载](https://github.com/lokeshgupta1981/RESTEasy/tree/master/RESTfulDemoApplication)