我在为以下Json字符串创建适当的RequestParams时遇到了麻烦:
{
"input": [
{
"personAdres": {
"plaats": "Amsterdam",
"straat": "Grietenstraat",
"huisnummer": "12",
"postcode": "4512UN""
},
"interesses": [
"gas_station",
"soccer"
]
},
{
"personAdres": {
"plaats": "Arnhem",
"straat": "Koningsweg",
"huisnummer": "3",
"postcode": "1953AA"
},
"interesses": [
"gas_station",
"soccer"
]
}
]
}
我尝试了以下内容:
@RequestMapping(method = RequestMethod.GET, params = {"input", "personAdres", "plaats", "straat", "huisnummer", "postcode", "interesses"})
public
@ResponseBody`enter code here`
String getMovie(
@RequestParam(value = "input") String[] input,
@RequestParam(value = "personAdres") String[] personAdres,
@RequestParam(value = "plaats") String plaats,
@RequestParam(value = "straat") String straat,
@RequestParam(value = "huisnummer") String huisnummer,
@RequestParam(value = "postcode") String postcode,
@RequestParam(value = "interesses")String[] interesses,
ModelMap model
)
这似乎不起作用。我收到以下错误。
找不到servlet请求的匹配处理程序方法:
任何人都可以帮我创建正确的请求.Params。
编辑:这似乎有用
@Controller
@RequestMapping("/dateSuggestie")
public class DateController {
@RequestMapping(method = RequestMethod.GET)
public
@ResponseBody
String getMovie(
@RequestParam(value = "input[0][personAdres][plaats]") String p0Plaats,
@RequestParam(value = "input[0][personAdres][straat]") String p0Straat,
@RequestParam(value = "input[0][personAdres][huisnummer]") String p0HuisNummer,
@RequestParam(value = "input[0][personAdres][postcode]") String p0PostCode,
@RequestParam(value = "input[0][interesses][]") String[] p0Interesses,
@RequestParam(value = "input[1][personAdres][plaats]") String p1Plaats,
@RequestParam(value = "input[1][personAdres][straat]") String p1Straat,
@RequestParam(value = "input[1][personAdres][huisnummer]") String p1HuisNummer,
@RequestParam(value = "input[1][personAdres][postcode]") String p1PostCode,
@RequestParam(value = "input[1][interesses][]") String[] p1Interesses) {
答案 0 :(得分:17)
您正在向控制器发送JSON而不是请求参数。仅当数据作为请求参数提交时,@RequestParam
和@ModelAttribute
才有效。
您的JSON作为请求正文发送给控制器。对于这个春天,有@RequestBody
注释。一般来说,你不想自己解析身体,而是使用框架为你做繁重的工作。为此,存在Jackson等库。
这些框架也与Spring集成,可以在the reference guide中阅读。
您需要构造一个对象,它是JSON的Java表示形式,以便Jackson可以进行转换。然后,您可以将控制器方法重写为此类
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String getMovie(@RequestBody YourObject) { ... }
答案 1 :(得分:2)
我个人喜欢Jackson库 - 它有助于将JSON对象映射到Java的POJO。
看一下MKYONG的教程:http://www.mkyong.com/spring-mvc/spring-3-mvc-and-json-example/(用项目下载ZIP)。 或者看一下这个帖子:Parsing JSON in Spring MVC using Jackson JSON