Loading

Jackson枚举处理

@JsonValue
可以用在get方法或者属性字段上,一个类只能用一个,当加上@JsonValue注解时,该类的json化结果,只有这个get方法的返回值,而不是这个类的属性键值对.

@JsonCreator
当json在反序列化时,默认选择类的无参构造函数创建类对象,没有无参构造函数时会报错,

前台传入格式
{type:1}
序列化后返回
{val:1;key:"本地"}
枚举类
public enum OOSType {
  LOCAL(1,"本地"),ALIYUN(2,"阿里云"),QINIU(3,"七牛云"),TENCENT(4,"腾讯云");
  private Integer val;
  private String key;

  OOSType(Integer val, String key) {
    this.val = val;
    this.key = key;
  }
  @JsonCreator
  public  static  OOSType valueOf(int val){
    OOSType[] vals = OOSType.values();;
    for (OOSType v : vals){
      if (v.getVal().equals(val)){
        return  v;
      }
    }
    return  null;
  }
  @JsonValue
  public Integer getVal() {
    return val;
  }

posted @ 2020-12-03 10:33  八百斤青龙偃月刀  阅读(978)  评论(0)    收藏  举报