为了统一调用,可以定义一个枚举接口类

1
2
3
4
5
public interface BaseEnum<E extends Enum<E>>{
Integer getCode();//枚举值
String getMsg();//枚举描述

}

然后定义枚举

1
2
3
public enum CheckStatusEnum implements BaseEnum<CheckStatusEnum>{

}

实现自定义序列化

1
2
3
4
5
6
7
8
9
10
@JackSonStdImpl
public class CodeAndMsgEnumSerializer extends JsonSerializer<BaseEnum<? extends Enum<?>>>{
@Override
public void serialize(BaseEnum<? extends Enum<?>> baseEnum,JsonGenerator jsonGenerator,SerializerProvider serializerProvider)throws IOException{
jsonGenerator.writeNumber(baseNum.getCode());
jsonGenerator.writeStringField(jsonGenerator.getOutputContext().CurrentName()+"Str",baseEnum,getMsg());
}


}

使用方式:

1
2
@JsonSerialize(using=CodeAndMsgEnumSerializer.class)
CheckStatusEnum checkStatus;