如果是 GET 请求中需要反序列化枚举值(即 url 中的参数[querystring]),确保以下两点
1.1. 重写 StringToEnumConverterFactory
1.2. 配置 registry.addConverterFactory(new StringToEnumConverterFactory());
如果是 POST 请求,确保以下两点
2.1. 在目标字段或 getXXX() 上写 @JsonValue
注解,这个注解会在序列化以及反序列化时使用,但仅限于 json 格式的数据,如果是 GET 请求中 url 上的参数,这个就没用,因为只有 json 的序列化和反序列化才会走 jackson 的代码啊
2.2. 如果字段或 getXXX() 返回的是 Integer 类型的数据,那么客户端在传值时需要 toString() 一下,即确保传递过来的值是字符串类型,而不是整型,否则无法解析参数(如果有时间再深究)。
2.3. 0
和 "0"
也可以传,这个会被反序列化成枚举类型中的第一项
关于第一点和第二点中具体代码的配置,可以参考之前写的spring-boot rest controller 使用枚举作为参数,重写反序列化实现任意值转枚举类型
spring boot 中接口参数为枚举时的反序列化配置(总结)
原文:https://www.cnblogs.com/myesn/p/15004402.html