枚举类 json格式 的正反转化
例如有以下枚举:
@AllArgsConstructor //lombok的有参构造注解
public enum TestEnum {
AAA(0,"AAAa"),
BBB(1,"BBBb"),
CCC(2,"CCCc"),
DDD(4,"DDDd");
@JsonValue
private Integer id;
private String name;
}
- 默认不加 @JsonValue 注解时,以枚举对象的名字转json
AAA(0,“AAAa”), 转json后 “AAA”
- 给某个字段加@JsonValue注解时,如给name字段加@JsonValue注解
AAA(0,“AAAa”), 转json后 “AAAa”
- 但是 如果这个字段是integer类型的,如给Integer id字段加@JsonValue注解
DDD(4,“DDDd”), 转json后 4 (注意我的4 没有带引号 这个4是数字类型)
数字类型的4反转枚举类时,会把4当做索引去找枚举对象
四个枚举对象索引为[0,1,2,3] 数字类型4反转时会报错
解决办法:
- 将 Integer id 改为 String id 这样最好
- 保证每个枚举对象 integer id 的值 和索引值对应(自上而下 从0开始) 这样很局限