首页 文章

如何在GET调用中将map作为请求参数发送

提问于
浏览
1

是否可以在GET调用中将map作为参数发送 . 我搜索,我可以找到列表和集合 . 但没有找到任何 Map 收集 .

我试过以下,我的控制器方法看起来像这样 .

@GetMapping("/test")
    public ResponseEntity<?> mapTest(@RequestParam Map<String,String> params) {

        LOG.info("inside test with map  "+  params );

        return new ResponseEntity<String>("MAP", HttpStatus.OK);
    }

我发了邮递员的以下要求

http://localhost:8080/test?params={a:abc,b:bcd}

一切正常,没有错误和例外 . 但我收到的 Map 看起来像 key=params , value={a:abc,b:bcd}

我希望收到的 Map 就像 key1="a" value1=abc ,key2="b" value2="bcd"

1 回答

  • 5

    这在_264406中记录:

    当@RequestParam注释声明为Map <String,String>或MultiValueMap <String,String>参数时,将使用所有请求参数填充 Map .

    这意味着您当前获得的响应是预期结果 . Map 包含所有参数的列表,在您的情况下,您只有一个名为 param 的参数 .

    如果您需要自定义参数映射,则必须自己实现 . 由于您既没有使用JSON,也可能需要手动解析参数 .

    但是,如果您的目标是拥有参数的动态映射,您仍然可以使用 Map<String, String> ,但您必须将您的请求更改为:

    http://localhost:8080/test?a=abc&b=bcd
    

相关问题