客户端/浏览器向我的 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
.
是否有一种简单的可能性来注入(inject) JSON 参数,只是以某种方式对其进行注释,类似于 @FormParam
在 application/x-www-form-urlencoded
的情况下要求?
我想要一些比使用 Jackson 的 ObjectMapper
解码 JSON 字符串更简单的解决方案。或 Jettison 的 JSONObject
.
最佳答案
您可以创建一个 Java 类来反射(reflect)您的 JSON 对象的数据模型,并使用 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);
}
关于java - 从 JAX-RS 中的 JSON 请求获取简单的 JSON 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17970969/