这可能是一个有点愚蠢的问题,但我很困惑是否可以在 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/