使用Jersey将JSON绑定到Java对象

nar*_*rsi 2 java rest json web-services jersey

我正在使用Jersey开发REST应用程序并在我的服务中创建CRUD操作.

我的问题是如何将JSON绑定为方法中的对象.我无法使用JSON请求执行保存操作.

所以请提供我开发CRUD应用程序的任何有用示例.

cas*_*lin 7

Jersey JSON支持是一组扩展模块,如MOXyJackson.

莫西

通过MOXy的 JSON绑定支持是自Jersey 2.0以来在Jersey应用程序中支持JSON绑定的默认方式.当JSON MOXy模块位于类路径上时,Jersey将自动发现模块并通过MOXy在应用程序中启用JSON绑定支持.

要将MOXy用作JSON提供程序,您需要将jersey-media-moxy模块添加到pom.xml文件中:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
    <version>2.22.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果您不使用Maven,请确保在类路径上具有所有必需的依赖项.

使用MOXy,您可以使用JAXB注释来控制JSON的生成方式.

杰克逊2.x

要将Jackson 2.x用作JSON提供程序,您需要将jersey-media-json-jackson模块添加到您的pom.xml文件中:

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.22.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

如果您不使用Maven,请确保在类路径上具有所有必需的依赖项.

Jackson 2.x提供了一组丰富的注释来控制如何从POJO生成JSON.

创建CRUD应用程序

定义将从/向JSON封送的POJO.以下面的类为例:

public class Book implements Serializable {

    private Long id;
    private String title;
    private String description;

    public Book {

    } 

    // getters and setters ommited
}
Run Code Online (Sandbox Code Playgroud)

根据您的JSON提供程序,您可以使用注释POJO来控制JSON的生成方式.

创建REST端点.要将数据用作JSON,只需使用注释即可@Consumes(MediaType.APPLICATION_JSON).要生成JSON,请使用它进行注释@Produces(MediaType.APPLICATION_JSON).

考虑以下类作为开始的示例:

@Path("/books")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class BookEndpoint {

    @POST
    public Response create(Book book) {
        ...
    }

    @GET
    @Path("/id")
    public Response read(@QueryParam("id") Long id) {
        ...
    }

    @PUT
    @Path("/id")
    public Response update(@QueryParam("id") Long id, Book book) {
        ...
    }

    @DELETE
    @Path("/id")
    public Response delete(@QueryParam("id") Long id) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)