客户端/浏览器向我的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字符串。
答案 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参数。