原文: https://howtodoinjava.com/resteasy/resteasy-jettison-json-example/

    RESTEasy 是 JBOSS 提供的 JAX-RS 规范的实现,用于构建 RESTful Web 服务和 RESTful Java 应用。 尽管这不仅限于仅在 JBOSS 中使用,您还可以与其他服务器协作。

    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 项目

    1. mvn archetype:generate -DgroupId=com.howtodoinjava -DartifactId=RESTfulDemoApplication
    2. -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
    3. mvn eclipse:eclipse -Dwtpversion=2.0

    2)更新pom.xml中的运行时依赖项

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    3. <modelVersion>4.0.0</modelVersion>
    4. <groupId>com.howtodoinjava</groupId>
    5. <artifactId>RESTfulDemoApplication</artifactId>
    6. <packaging>war</packaging>
    7. <version>1.0-SNAPSHOT</version>
    8. <name>RESTfulDemoApplication Maven Webapp</name>
    9. <url>http://maven.apache.org</url>
    10. <repositories>
    11. <repository>
    12. <id>jboss</id>
    13. <url>http://repository.jboss.org/maven2</url>
    14. </repository>
    15. </repositories>
    16. <dependencies>
    17. <dependency>
    18. <groupId>junit</groupId>
    19. <artifactId>junit</artifactId>
    20. <version>3.8.1</version>
    21. <scope>test</scope>
    22. </dependency>
    23. <!-- core library -->
    24. <dependency>
    25. <groupId>org.jboss.resteasy</groupId>
    26. <artifactId>resteasy-jaxrs</artifactId>
    27. <version>2.3.1.GA</version>
    28. </dependency>
    29. <dependency>
    30. <groupId>net.sf.scannotation</groupId>
    31. <artifactId>scannotation</artifactId>
    32. <version>1.0.2</version>
    33. </dependency>
    34. <!-- Jettison support -->
    35. <dependency>
    36. <groupId>org.jboss.resteasy</groupId>
    37. <artifactId>resteasy-jettison-provider</artifactId>
    38. <version>2.3.1.GA</version>
    39. </dependency>
    40. </dependencies>
    41. <build>
    42. <finalName>RESTfulDemoApplication</finalName>
    43. </build>
    44. </project>

    3)更新web.xml文件以实现 Resteasy 特定的 Servlet 映射

    1. <!DOCTYPE web-app PUBLIC
    2. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    3. "http://java.sun.com/dtd/web-app_2_3.dtd" >
    4. <web-app>
    5. <display-name>Archetype Created Web Application</display-name>
    6. <!-- Auto scan REST service -->
    7. <context-param>
    8. <param-name>resteasy.scan</param-name>
    9. <param-value>true</param-value>
    10. </context-param>
    11. <servlet>
    12. <servlet-name>resteasy-servlet</servlet-name>
    13. <servlet-class>
    14. org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
    15. </servlet-class>
    16. </servlet>
    17. <servlet-mapping>
    18. <servlet-name>resteasy-servlet</servlet-name>
    19. <url-pattern>/*</url-pattern>
    20. </servlet-mapping>
    21. </web-app>

    4)编写服务类和模型类

    User.java

    1. package com.howtodoinjava.model;
    2. import java.io.Serializable;
    3. import javax.xml.bind.annotation.XmlAccessType;
    4. import javax.xml.bind.annotation.XmlAccessorType;
    5. import javax.xml.bind.annotation.XmlAttribute;
    6. import javax.xml.bind.annotation.XmlElement;
    7. import javax.xml.bind.annotation.XmlRootElement;
    8. @XmlAccessorType(XmlAccessType.NONE)
    9. @XmlRootElement(name = "user")
    10. public class User implements Serializable {
    11. private static final long serialVersionUID = 1L;
    12. @XmlAttribute(name = "id")
    13. private int id;
    14. @XmlElement(name = "firstName")
    15. private String firstName;
    16. @XmlElement(name = "lastName")
    17. private String lastName;
    18. public int getId() {
    19. return id;
    20. }
    21. public void setId(int id) {
    22. this.id = id;
    23. }
    24. public String getFirstName() {
    25. return firstName;
    26. }
    27. public void setFirstName(String firstName) {
    28. this.firstName = firstName;
    29. }
    30. public String getLastName() {
    31. return lastName;
    32. }
    33. public void setLastName(String lastName) {
    34. this.lastName = lastName;
    35. }
    36. }

    UserManagementModule.java

    1. package com.howtodoinjava.service;
    2. import javax.ws.rs.GET;
    3. import javax.ws.rs.Path;
    4. import javax.ws.rs.PathParam;
    5. import javax.ws.rs.core.Response;
    6. import com.howtodoinjava.model.User;
    7. @Path("/user-management")
    8. public class UserManagementModule
    9. {
    10. @GET
    11. @Path("/users/{id}")
    12. @Produces("application/json")
    13. public Response getUserById(@PathParam("id") Integer id)
    14. {
    15. User user = new User();
    16. user.setId(id);
    17. user.setFirstName("Lokesh");
    18. user.setLastName("Gupta");
    19. return Response.status(200).entity(user).build();
    20. }
    21. }

    5)运行应用

    当我们在 tomcat 中部署上述构建的应用并单击 URL:http://localhost:8080/RESTfulDemoApplication/user-management/users/10时,以下是响应。

    RESTEasy Jettison JSON 示例 - 图1

    RESTEasy + Jettison 示例

    学习愉快!

    源码下载