public class Entity {
private IntEnum field;
}
public enum IntEnum {
INIT(0);
private final int status;
IntEnum(int status) {
this.status = status;
}
public int getStatus() {
return status;
}
}
虽然字段类型是IntEnum,但是想让最后生成的是int的status数值,那么可以自定义编码器:
public class StatueCodec implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) {
serializer.write(((IntEnum) object).getStatus());
}
}
同样,如果反过来,前端传过来int,但是接收参数的字段写的是IntEnum,此时可以自定义解码器:
public class DataTypeCodec implements ObjectDeserializer {
@Override
@SuppressWarnings("unchecked")
public DataTypeEnum deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
Integer t = parser.parseObject(int.class);
return DataTypeEnum.fromType(t);
}
@Override
public int getFastMatchToken() {
return JSONToken.LITERAL_INT;
}
}
编码器, 下面示例是加入实体类(要转换成json的类)的定义如下:
虽然字段类型是
IntEnum
,但是想让最后生成的是int
的status
数值,那么可以自定义编码器:同样,如果反过来,前端传过来
int
,但是接收参数的字段写的是IntEnum
,此时可以自定义解码器: