use*_*634 23 rest spring spring-mvc
我需要在POST方法的请求体中传递一个值列表,但我得到了400: Bad Request error.
以下是我的示例代码:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody List<String> fruits) {
...
}
Run Code Online (Sandbox Code Playgroud)
我使用的JSON是: {"fruits":["apple","orange"]}
wci*_*slo 51
您使用的是错误的JSON.在这种情况下,您应该使用如下所示的JSON:
["orange", "apple"]
Run Code Online (Sandbox Code Playgroud)
如果您必须接受该表单中的JSON:
{"fruits":["apple","orange"]}
Run Code Online (Sandbox Code Playgroud)
你必须创建包装器对象:
public class FruitWrapper{
List<String> fruits;
//getter
//setter
}
Run Code Online (Sandbox Code Playgroud)
然后您的控制器方法应如下所示:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody FruitWrapper fruits){
...
}
Run Code Online (Sandbox Code Playgroud)
我有相同的用例,您可以通过以下方式更改方法定义:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody Map<String,List<String>> fruits) {
..
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是它接受任何键来代替“水果”,但如果它不是大功能,您可以轻松摆脱包装器。
| 归档时间: |
|
| 查看次数: |
72152 次 |
| 最近记录: |