美文网首页
spring boot 用注解的方式给Enum类型字段自定义序列

spring boot 用注解的方式给Enum类型字段自定义序列

作者: 小明_d19e | 来源:发表于2021-05-25 16:00 被阅读0次

    之前其实已经做了序列化了,因为用了mp,我所有枚举类型字段都做了序列化,但是序列化结果就是枚举字段的描述

    import com.baomidou.mybatisplus.annotation.EnumValue;
    import com.fasterxml.jackson.annotation.JsonValue;
    import com.ruoyi.framework.config.BaseEnum;
    import lombok.AllArgsConstructor;
    import lombok.Getter;
    @Getter
    @AllArgsConstructor 
    public enum ChargeType implements BaseEnum{
    WEIXIN(0,"微信"),ZHIFUBAO(1,"支付宝"),BANKTRANS(2,"银行转账") ;
          @EnumValue private Integer v;
     
          @JsonValue private String status;
    
    
    }
    

    BaseEnum就是个接口,一个是getV,一个是getStatus,至于说为什么要写接口,因为反序列化时方便,这里不赘述.
    现在我想在前端,既显示枚举值,又显示枚举描述,只需字段加上@JsonSerialize(using=MyEnumSerializer.class)

    import java.io.IOException;
    import com.fasterxml.jackson.core.JsonGenerator;
    import com.fasterxml.jackson.databind.JsonSerializer;
    import com.fasterxml.jackson.databind.SerializerProvider;
    import com.ruoyi.framework.config.BaseEnum;
    
    public class MyEnumSerializer extends JsonSerializer<Enum> {
    
     
    
        @Override
        public void serialize(Enum value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
             
            gen.writeStartObject();
            gen.writeNumberField("code",((BaseEnum)value).getV());
            gen.writeStringField("status",((BaseEnum)value).getStatus());
            gen.writeEndObject();
            
        }
    
    }
    

    相关文章

      网友评论

          本文标题:spring boot 用注解的方式给Enum类型字段自定义序列

          本文链接:https://www.haomeiwen.com/subject/rvbksltx.html