从JAX-RS中的JSON请求获取简单的JSON参数

And*_*i I 5 java json jax-rs

客户端/浏览器向我的rest资源发出JSON请求(请求的内容类型是application/json,并且相应的REST方法被@Consumes("application/json")注释).

@Path("/process-something")
@POST
@Produces("application/json")
@Consumes("application/json")
@HandleDefaultExceptions
public AResponse processSomething(List<Long>) {

}
Run Code Online (Sandbox Code Playgroud)

JSON主体由一些简单类型组成,如List<Long>String.

是否有一种简单的可能性来注入JSON参数只是以某种方式注释它,类似于请求@FormParam的情况application/x-www-form-urlencoded?我想要一些比使用Jackson ObjectMapper或Jettison 解码JSON字符串更简单的解决方案JSONObject.

The*_*ect 4

您可以创建一个反映 JSON 对象的数据模型的 Java 类,并使用 JAXB 的 @XmlRootElement 对其进行注释。您可以使用 @XmlElement 注释将属性映射到自定义 JSON 键名称,例如:

@XmlRootElement
public class MyJSONOject{
    @XmlElement(name="json-key-name")
    public String attribute;
}
Run Code Online (Sandbox Code Playgroud)

然后 Jersey 可以透明地为您解码 JSON 对象,瞧!

@Path("/process-something")
@POST
@Produces("application/json")
@Consumes("application/json")
public AResponse processSomething(MyJSONOject json) {
    log.fine(json.attribute);
}
Run Code Online (Sandbox Code Playgroud)