Spring MVC:发布请求和带有数组的json对象:错误请求


问题内容

我正在尝试使用Spring MVC从http POST请求中检索参数。

该请求包含以下json对象(content-type:application / json),该对象本身包含customObjects数组:

{  
   "globalId":"338",
   "lines":[  
      {  
         "id": "someId",
         "lib":"blabla",
        ...

      }
   ]
}

这是我要使用的代码:

  @RequestMapping(method = RequestMethod.POST, value = "/valider")
  @ResponseBody
  public void valider(final HttpServletRequest request, @RequestParam("globalId") final String globalId, @RequestParam("lines") final MyCustomObject[] lines) {

我得到的只是一个“错误请求”错误(http 400)。

是否可以分别检索两个参数“ globalId”和“
lines”?还是因为它们在同一个json对象中,所以必须将其视为具有单个参数?当发布请求中有多个参数时,如何进行?


问题答案:

我认为您正在寻找类似@@ RequestBody之类的东西。创建一个类来表示您的JSON数据。在您的情况下,该类将包含两个成员变量-
globalId作为字符串,而lines作为其表示的对象的数组。然后在控制器方法中,将在此类类型上使用@RequestBody批注,以便Spring能够将JSON转换为对象。检查以下示例。

http://www.leveluplunch.com/java/tutorials/014-post-json-to-spring-rest-
webservice/

http://www.techzoo.org/spring-framework/spring-mvc-requestbody-json-
example.html