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

时间:2015-02-11 07:26:06

标签: 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;
}

如果我想在表单param中获取userdefine对象,该怎么办?

@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;
}

提前致谢。

1 个答案:

答案 0 :(得分:3)

这是可能的,但你需要了解什么是@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,你应该在类路径中有杰克逊,你可以找到一个例子here。如果您阅读this也是个好主意。