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

时间:2013-07-31 12:52:48

标签: 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>) {

}

JSON正文包含一些简单类型,例如List<Long>String

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

2 个答案:

答案 0 :(得分:4)

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

@XmlRootElement
public class MyJSONOject{
    @XmlElement(name="json-key-name")
    public String attribute;
}

然后,泽西岛可以透明地为你解码JSON对象,瞧!

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

答案 1 :(得分:1)

根据this documentation,有6个基于参数的注释用于从请求中提取参数,似乎没有人用于JSON参数。