如何在JAX-RS REST方法中检索JSON消息体?

时间:2016-12-08 13:53:25

标签: java json rest jax-rs put

我有以下JSON将作为HTTP请求的一部分在邮件正文中传递。

{
    "names": [
        {
            "id":"<number>",
            "name":"<string>",
            "type":"<string>",
        }
    ]
}

我当前的REST处理程序如下。我能够获得作为路径参数传递的Id和`版本,但我不确定如何检索消息正文上的内容?

        @PUT
        @Path("/Id/{Id}/version/{version}/addPerson")
        public Response addPerson(@PathParam("Id") String Id,
                                                @PathParam("version") String version) {

            if (isNull(Id) || isEmpty(version)) {
                return ResponseBuilder.badRequest().build();
            }

            //HOW TO RECIEVE MESSAGE BODY?

            //carry out PUT request and return DTO: code not shown to keep example simple


            if (dto.isSuccess()) {
                return Response.ok().build();
            } else {
                return Response.serverError().build();
            }

}

注意:我使用的是JAX-RS框架。

1 个答案:

答案 0 :(得分:1)

你只需要将你的名字json映射到POJO并将@Consumes注释添加到你的put方法,这是一个例子:

@PUT
@Consumes("application/json")
@Path("/Id/{Id}/version/{version}/addPerson")
public Response addPerson(@PathParam("Id") String Id,
                          @PathParam("version") String version,
                          List<NamObj> names) {

我假设您正在尝试检索元素列表,如果不是这样,只需在参数中使用POJO。

根据您在服务器中使用的json库,您可能需要将@xml注释添加到POJO,以便解析器可以知道如何映射请求,这就是示例json的映射应如下所示: / p>

@XmlRootElement
public class NameObj {
   @XmlElement public int id;
   @XmlElement public String name;
   @XmlElement public String type;
}

泽西岛文件:https://jersey.java.net/documentation/latest/user-guide.html#json

@cosumes参考:http://docs.oracle.com/javaee/6/tutorial/doc/gilik.html#gipyt