如何使用 Spring MVC 在 post 方法中传递 List<String>?

新手上路,请多包涵

我需要在 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"]}

原文由 user2359634 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您使用的是错误的 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){
...
}

原文由 wcislo 发布,翻译遵循 CC BY-SA 3.0 许可协议

我有相同的用例,您可以通过以下方式更改方法定义:

 @RequestMapping(value = "/saveFruits", method = RequestMethod.POST,
    consumes = "application/json")
@ResponseBody
public ResultObject saveFruits(@RequestBody Map<String,List<String>> fruits) {
    ..
}

唯一的问题是它接受任何键来代替“水果”,但如果它不是很大的功能,你可以很容易地摆脱包装器。

原文由 Mitesh Ukate 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题