Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring mvc从json请求映射_Java_Spring Mvc - Fatal编程技术网

Java Spring mvc从json请求映射

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

为以下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请求的匹配处理程序方法:

有人能帮我创建正确的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,我只是用这种方式表示它,以便它更具可读性。更多详细信息如下: