我需要在POST
方法的请求正文中传递值列表,但我得到400: Bad Request error
。
以下是我的示例代码:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody List<String> fruits) {
...
}
我使用的JSON是:{"fruits":["apple","orange"]}
答案 0 :(得分:40)
您使用的是错误的JSON。在这种情况下,您应该使用如下所示的JSON:
["orange", "apple"]
如果您必须接受该格式的JSON:
{"fruits":["apple","orange"]}
您必须创建包装器对象:
public class FruitWrapper{
List<String> fruits;
//getter
//setter
}
然后您的控制器方法应如下所示:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody FruitWrapper fruits){
...
}
答案 1 :(得分:0)
我有相同的用例, 您可以通过以下方式更改方法定义:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody Map<String,List<String>> fruits) {
..
}
唯一的问题是它可以接受任何键来代替“水果”,但是如果它不是主要功能,则可以轻松摆脱包装器。
答案 2 :(得分:0)
如果您想保持原样,可以将输入作为["apple","orange"]
传递。
它对我来说具有类似的方法签名。