java - 如何在Java中的RESTful(WEB SERVICE)POST方法中接收json对象

标签 java json web-services

这可能是一个有点愚蠢的问题,但我很困惑是否可以在 RESTful webservice 下的 POST 方法中接收 @FormParam 中的 JSON 对象

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<String> codeList)
{
    List<MyObject> myobjects = null;
    try {
        //some code
    } catch (Exception e) {
        //some exception if occur 
    }
    return myobjects;
}

如果我想在表单参数中获取用户定义对象怎么办?

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(@FormParam("CodeList")
List<MyObject> formMyObjectList)
{
    List<MyObject> myobjects = null;
    try {
        //some code
    } catch (Exception e) {
        //some exception if occur 
    }
    return myobjects;
}

提前致谢。

最佳答案

这是可能的,但是你需要了解什么是@FormParam,基本上它从特定的html表单接收值,因为你可能知道@FormParam需要知道你想使用@FormParam从请求中获取的参数是什么("myParam"),如果你想使用json,你需要提供它。所以答案是你不需要使用 @FormParam 来使用 JSON

上面的意思是,您需要发送完整的 json,而不是发送一对键/值属性,显然您需要使用 jquery 甚至 javascript 生成该 json,然后将其发送到您的端点,应该是这样的。

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/fetch/")
public List<MyObject> getCandidate(MyBean mybean){}

MyBean 类需要具有要在 JSON 中发送的字段。这里的神奇之处在于 MessageBodyReader,你的类路径中应该有 jackson,你可以找到一个例子 here 。如果您阅读 this 也是个好主意.

关于java - 如何在Java中的RESTful(WEB SERVICE)POST方法中接收json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28448726/

相关文章:

java - 使用 Google App Engine 的网络服务

java - 如何使用 Java 将 MongoDB 对象 id 转换为 Java Date 或 Instant

java - 如何在 java 中运行 saxon xslt 转换

javascript - Node.js 未定义 :1 [SyntaxError: Unexpected end of input]

ruby-on-rails - 如何创建一个网络服务

java - org.codehaus.jackson.map.JsonMappingException : Infinite recursion (StackOverflowError)

java - Comparable-compareTo方法

java - Java 中的方法在 Eclipse 中显示错误,使用 Maven 构建正常

使用 localStorage 后 JavaScript Array.indexOf() 失败

json - 如何以 POST 方法从 csv 文件发送 JSON 数据?