原文: https://howtodoinjava.com/resteasy/resteasy-jackson-json-example/
RESTEasy 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 RESTful Web 服务和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作。
Jackson 是用于处理 JSON 数据格式的多功能 Java 库。 Jackson 的目标是为开发人员提供快速,正确,轻巧和人体工程学的最佳组合。
在本文中,我演示了将 Jackson 与 RESTEasy 结合使用的方式,以 JSON 格式转换 API 响应。
使用的环境:
- RESTEasy 2.3.1.GA
- RESTEasy Jackson 供应器 2.3.1
- Tomcat 7
- JDK 1.6
请按照以下步骤构建演示应用。
1)创建一个 Maven 项目并转换为 Eclipse Web 项目
mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=RESTfulDemoApplication-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=falsemvn eclipse:eclipse -Dwtpversion=2.0
2)更新pom.xml中的运行时依赖项
<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><!-- Jackson support --><dependency><groupId>org.jboss.resteasy</groupId><artifactId>resteasy-jackson-provider</artifactId><version>2.3.1.GA</version></dependency></dependencies><build><finalName>RESTfulDemoApplication</finalName></build></project>
3)更新web.xml文件以实现 Resteasy 特定的 Servlet 映射
<!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
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
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 + Jackson 示例
单击下面的代码下载此示例的源代码。
祝您学习愉快!
