jackson 解析枚举 时一般返回 MALE,FEMALE,
如果想返回 文字或者数字怎么办。网上stackflow上大都用@JsonCreator
官网提供的方法(下面的方法)更好点,想返回什么就在属性的get方法上加 @JsonValue。如果想在不同的方法中返回不同的值就用其他的方法了!
packagecom.model;
importcom.fasterxml.jackson.annotation.JsonValue;
publicenumGender {
MALE(0,"男"),FEMALE(1,"女"),UNKOWN(2,"未知");
privateInteger id;
privateString name;
privateGender(Integer id,String name) {
this.id = id;
this.name = name;
}
privateGender(Integer id) {
this.id = id;
}
privateGender(String name) {
this.name = name;
}
publicString getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
@JsonValue
publicInteger getId() {
returnid;
}
publicvoidsetId(Integer id) {
this.id = id;
}
}
OR :
public class OrderTypeSerializer extends JsonSerializer {
@Override
public void serialize(OrderType value, JsonGenerator generator,
SerializerProvider provider) throws IOException,
JsonProcessingException {
generator.writeStartObject();
generator.writeFieldName("id");
generator.writeNumber(value.getId());
generator.writeFieldName("name");
generator.writeString(value.getName());
generator.writeEndObject();
}}