Java Spring MVC-发送JSON请求正文错误

Java Spring MVC-发送JSON请求正文错误,java,json,spring,Java,Json,Spring,我正试图向我的应用程序发送一个JSON字符串作为请求。这是我的代码: @RequestMapping( value = "/mylink/upload", method = RequestMethod.POST, consumes ="application/json", produces = "application/json") public @ResponseBody List<Upload> upload(

我正试图向我的应用程序发送一个JSON字符串作为请求。这是我的代码:

@RequestMapping(
        value = "/mylink/upload",
        method = RequestMethod.POST,
        consumes ="application/json",
        produces = "application/json")
public
@ResponseBody
List<Upload> upload(
        @RequestParam(value = "hdfsLocation") String hdfsLocation

) throws Exception {
    return S3HdfsTransfer.uploadFromHDFS(hdfsLocation);
}
这就是我得到的回应。如果我把参数放在URL中,它就会工作

{
  "httpStatus": 500,
  "appErrorId": 0,
  "message": "Required String parameter 'hdfsLocation' is not present",
  "trackingId": "8c6d45fd-2da5-47ea-a213-3d4ea5764681"
}
知道我做错了什么吗

谢谢,
塞尔维亚语

它不应该是
@RequestBody
而不是
@RequestParam
? 此外,即使使用了
@RequestBody
,整个JSON字符串:

{
“hdfsLocation”:hdfs://145.160.10.10:8020"
}

将是
字符串hdfsLocation
的值,而不仅仅是hdfs url。因此,您必须自己对该JSON进行JSON解析才能获得hdfs url。

看起来您将
@RequestBody
@RequestParam
混淆了。执行以下任一操作:

  • 将请求参数作为请求参数(而不是主体)传递。Like,(编码)

  • @RequestParam
    替换为
    @RequestBody
    。如果要发送正文,请不要将其与请求参数一起发送。这是两件不同的事情


我猜你看得太多了:)

尝试更改退货类型你能删除内容类型并尝试吗
{
  "httpStatus": 500,
  "appErrorId": 0,
  "message": "Required String parameter 'hdfsLocation' is not present",
  "trackingId": "8c6d45fd-2da5-47ea-a213-3d4ea5764681"
}