1. 程式人生 > 實用技巧 >jackson 列舉 enum json 解析型別 返回數字 或者自定義文字 How To Serialize Enums as JSON Objects with Jackson

jackson 列舉 enum json 解析型別 返回數字 或者自定義文字 How To Serialize Enums as JSON Objects with Jackson

1、列舉類如下

  

package com.irobotzz.docs.bms.constants;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.common.auth.constants.IBaseEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

/**
 * 使用者啟用狀態
 *
 * @author Yungui.zheng
 * @date 2020/05/11
 */
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum StatusEnum implements IBaseEnum<Integer> {

    /**
     * 使用者啟用狀態常量
     */
    DISABLED(0, "停用"),
    ENABLED(1, "啟用"),
    UNKNOWN(-1,"未知");

    @EnumValue
    private final Integer value;
    private final String desc;

    StatusEnum(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }

}

  這種寫法返回到前端時一個物件:{value:1,desc:"啟用"}

2、希望返回數字value,使用註解@JsonValue

package com.irobotzz.docs.bms.constants;

import com.baomidou.mybatisplus.annotation.EnumValue;
import com.common.auth.constants.IBaseEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonValue;
import lombok.Getter;

/**
 * 使用者啟用狀態
 *
 * @author Yungui.zheng
 * @date 2020/05/11
 */
@Getter
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum StatusEnum implements IBaseEnum<Integer> {

    /**
     * 使用者啟用狀態常量
     */
    DISABLED(0, "停用"),
    ENABLED(1, "啟用"),
    UNKNOWN(-1,"未知");

    @EnumValue
    @JsonValue
    private final Integer value;
    private final String desc;

    StatusEnum(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }

}

  這個時候返回值為:1