Java Spring mvc从json请求映射
为以下Json字符串创建适当的RequestParams时遇到问题:Java Spring mvc从json请求映射,java,spring-mvc,Java,Spring Mvc,为以下Json字符串创建适当的RequestParams时遇到问题: { "input": [ { "personAdres": { "plaats": "Amsterdam", "straat": "Grietenstraat", "huisnummer": "12", "postcode": "4512UN"" }, "interesses": [ "gas_sta
{
"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请求的匹配处理程序方法:
有人能帮我创建正确的requestParams吗
编辑:这似乎有效
@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) {
就我个人而言,我喜欢Jackson库——它有助于将JSON对象映射到Java的POJO中 看看MKYONG的教程:(下载项目的ZIP)。
或者看看这个线程:您正在向控制器发送JSON,而不是请求参数
@RequestParam
和@modeldattribute
仅在数据作为请求参数提交时起作用
JSON将作为请求主体发送到控制器。对于这个spring,有@RequestBody
注释。一般来说,您不希望自己解析身体,而是使用一个框架为您完成繁重的工作。出于这个目的,像这样的库是存在的
这些框架还与Spring集成在一起,这是可以读懂的
您需要构造一个对象,它是JSON的Java表示形式,以便Jackson可以进行转换。然后,您可以将控制器方法重写为如下内容
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String getMovie(@RequestBody YourObject) { ... }
你能粘贴这个控制器的完整代码吗?我认为问题出在其他地方。首先尝试从
RequestMapping
中删除params条件,看看它是否有效。我实际上并没有发送json,我只是用这种方式表示它,以便它更具可读性。更多详细信息如下: