gpt4 book ai didi

spring - 无法在 Spring REST Controller 中将 Map 用作 JSON @RequestParam

转载 作者:行者123 更新时间:2023-12-05 08:54:57 25 4
gpt4 key购买 nike

这个 Controller

@GetMapping("temp")
public String temp(@RequestParam(value = "foo") int foo,
@RequestParam(value = "bar") Map<String, String> bar) {
return "Hello";
}

产生以下错误:

{
"exception": "org.springframework.web.method.annotation.MethodArgumentConversionNotSupportedException",
"message": "Failed to convert value of type 'java.lang.String' to required type 'java.util.Map'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.String' to required type 'java.util.Map': no matching editors or conversion strategy found"
}

我想要的是通过 bar 参数传递一些 JSON: http://localhost:8089/temp?foo=7&bar=%7B%22a%22%3A%22b%22%7D ,其中 foo7bar{"a":"b"}为什么 Spring 不能进行这种简单的转换?请注意,如果 map 用作 POST 请求的 @RequestBody,它会起作用。

最佳答案

这是有效的解决方案:只需定义一个从 StringMap 的自定义转换器作为 @Component。然后它会自动注册:

@Component
public class StringToMapConverter implements Converter<String, Map<String, String>> {

@Override
public Map<String, Object> convert(String source) {
try {
return new ObjectMapper().readValue(source, new TypeReference<Map<String, String>>() {});
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
}

关于spring - 无法在 Spring REST Controller 中将 Map 用作 JSON @RequestParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47948178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com