# 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](img/f497f470331bb5e3d63a6bc02ae77fc6.png)

RESTEasy + Jettison 示例



学习愉快！

[源码下载](https://github.com/lokeshgupta1981/RESTEasy/tree/master/RESTfulDemoApplication)