Как передать List <String> в методе post с помощью Spring MVC?
Мне нужно передать список значений в тело запроса метода 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"]}
Ответы
Ответ 1
Вы используете неправильный 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){
...
}
Ответ 2
У меня был такой же вариант использования. Вы можете изменить определение метода следующим образом:
@RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody Map<String,List<String>> fruits) {
..
}
Единственная проблема заключается в том, что он принимает любой ключ вместо "фруктов", но вы можете легко избавиться от обертки, если она не имеет большой функциональности.