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

这可能有点愚蠢的问题,但如果可以在RESTful webservice下的POST方法中的@FormParam中接收JSON对象,我会感到困惑。

@POST @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) @Path("/fetch/") public List getCandidate(@FormParam("CodeList") List codeList) { List 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 getCandidate(@FormParam("CodeList") List formMyObjectList) { List 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 getCandidate(MyBean mybean){} 

其中MyBean类需要具有将在JSON中发送的字段。 这里的魔力是感谢MessageBodyReader ,你应该在类路径中有jackson,你可以在这里找到一个例子。 如果你读这个也是个好主意。