5

客户端/浏览器向我的 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?我想要一些其他更简单的解决方案,而不是用 JacksonObjectMapper或 Jettison解码 JSON 字符串JSONObject

4

2 回答 2

4

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

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

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

@Path("/process-something")
@POST
@Produces("application/json")
@Consumes("application/json")
public AResponse processSomething(MyJSONOject json) {
    log.fine(json.attribute);
}
于 2013-07-31T20:58:39.237 回答
1

根据此文档,有 6 个基于参数的注释用于从请求中提取参数,似乎没有一个用于 JSON 参数。

于 2013-07-31T13:03:06.673 回答