背景:希望json序列化对象时,对枚举属性以jsonObject的形式序列化
具体实现
- 添加注解在枚举类上
- 枚举类
@AllArgsConstructor
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class StatusEnum {
SUCCESS(0, "成功");
private int code;
private String text;
}
- 主体类
-
public class User { StatusEnum status; }
- 问题,在对 User 使用反序列化的时候,无法对枚举属性反序列化
- 解决
- 对枚举类 code 属性添加注解 @JsonValue
- 代码如下
-
@AllArgsConstructor @Getter @JsonFormat(shape = JsonFormat.Shape.OBJECT) public class StatusEnum { SUCCESS(0, "成功"); @JsonValue private int code; private String text; }
-
遗留问题
-
使用 fast-json 可以反序列化, 但是使用 spring 自带的 jackson 反序列化无法反序列枚举?暂未解决?