gpt4 book ai didi

java - 如何将 @RequestParam Map 转换为自定义 Map<>

转载 作者:行者123 更新时间:2023-11-30 01:47:12 26 4
gpt4 key购买 nike

我正在尝试将 @RequestParam Map<String, String> 转换为我自己的 Map<Enum, Long>,我想知道该怎么做。我的服务需要获取此转换后的 Map<Enum, Long>,我真的很想避免使用包含我的枚举和 id 的对象。

这是必要的,因为端点是通过 api/suff?FOO=1234&BAR=4567 调用的,并且只有其中之一对于该服务是必需的。

我已经尝试使用 org.springframework.core.convert.converter.Converter 创建自己的 Converter<String, Map<Enum, Long>> 。但我无法成功转换它。

目前我的端点如下所示:

@GetMapping
public ResponseEntity<Stuff> getByIds(@RequestParam @NotEmpty @Size(max = 2) Map<Enum, Long> map) {
return new ResponseEntity<>(someService.getStuff(map), HttpStatus.OK);
}

有没有办法针对这种情况实现自定义转换器,还是我必须采用其他方法?

最佳答案

我会投票支持替代方法来实现这一目标 -

@GetMapping
public ResponseEntity<Stuff> getByIds(@RequestParam(value="FOO", required = false)
String fooValue, @RequestParam(value="BAR", required = false) String barValue) {

//Assuming you already have an ExceptionAdvice/handler for issues with the values passed
Map<Enum, Long> map = new HashMap<Enum, Long>();
if(null != fooValue){
map.put("FOO", Enum.parse(fooValue));
}
if(null != barValue){
map.put("BAR", Long.valueOf(barValue));
}
return new ResponseEntity<>(someService.getStuff(map), HttpStatus.OK);
}

我不确定这是否过度简化了您的 API - 这是我期望的判断。

关于java - 如何将 @RequestParam Map<String, String> 转换为自定义 Map<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57520119/

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