fastjson2
fastjson2 copied to clipboard
[FEATURE] 支持枚举在序列化成对象时通过统一接口声明的建议
请描述您的需求或者改进建议
假设项目统一要求对枚举的序列化统一为标准,格式value和desc,例如 统一的接口声明
@JSONType(writeEnumAsJavaBean = true)
// @JsonFormat(shape = JsonFormat.Shape.OBJECT)
public interface EnumFormatObject<V> {
V getValue();
String getDesc();
}
所有枚举需要实现接口,并不需要在子枚举类中显示的使用注解@JSONType(writeEnumAsJavaBean = true)
public enum AccountStatus implements EnumFormatObject<String> {
NORMAL("NORMAL", "正常"),
LOCKED("LOCKED", "锁定"),
DELETE("DELETE", "删除");
private final String value;
private final String desc;
AccountStatus(String value, String desc) {
this.value = value;
this.desc = desc;
}
@Override
public String getDesc() {
return desc;
}
@Override
public String getValue() {
return value;
}
}
这样所有的子枚举的行为已经被限定,并且看起来比较简洁,也不会因为忘记加入@JSONType(writeEnumAsJavaBean = true)而影响最后的效果,但是实际测试下来发现,必须要在子枚举类中增加@JSONType(writeEnumAsJavaBean = true)注解才可以。Jackson可以支持这种方式,所以希望Fastjson也能够支持,向父级扫描一下注解配置,然后完成这种方式的序列化。
请描述你建议的实现方案
希望在做序列化时,能过检查下父级的Fastjson的注解配置,这样可以在父级上统一子类的一些特性。
描述您考虑过的替代方案
- 使用Jackson
- 在所有子枚举上手动一一增加注解
附加信息
无