Jus*_*tas 6 java enums spring spring-boot
我有Spring Boot端点,它有枚举作为查询参数:
@GetMapping("/example")
public List<Example> getByEnum(@RequestParam(name = "exampleEnum", required = false) ExampleEnum exampleEnum) {
// code
}
Run Code Online (Sandbox Code Playgroud)
和枚举类:
public enum ExampleEnum {
FIRST,
SECOND,
}
Run Code Online (Sandbox Code Playgroud)
如果我将大写枚举值传递给endpoit,它反序列化很好,但它会抛出小写错误:
java.lang.IllegalArgumentException: No enum constant
Run Code Online (Sandbox Code Playgroud)
如何在Spring Boot Rest端点中反序列化枚举忽略大小写?
Spring Boot 2.0使用的是具有ACCEPT_CASE_INSENSITIVE_ENUMS功能的Jackson 2.9 .您应该可以通过设置启用它
spring.jackson.mapper.ACCEPT_CASE_INSENSITIVE_ENUMS = true
Run Code Online (Sandbox Code Playgroud)
财产按文档,附录A.
import com.fasterxml.jackson.annotation.JsonCreator;
import java.util.Arrays;
import java.util.Optional;
public enum ExampleEnum {
FIRST,
SECOND;
@JsonCreator
public static ExampleEnum setValue(String key) {
return Arrays.stream(ExampleEnum.values())
.filter(exampleEnum -> exampleEnum.toString().equals(key.toUpperCase()))
.findAny()
.orElse(null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4281 次 |
| 最近记录: |