Подтвердить что ты не робот

Как передать 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"]}

4b9b3361

Ответ 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) {
    ..
}

Единственная проблема заключается в том, что он принимает любой ключ вместо "фруктов", но вы можете легко избавиться от обертки, если она не имеет большой функциональности.