JSON序列化枚舉類型字段的展現(xiàn)格式

當(dāng)我們使用的對象里有枚舉類型的字段,我們可能需要的是枚舉中不同的屬性。

比如,在進(jìn)行JSON序列化的時候,我們可能需要枚舉中的不同屬性。

  1. 使用枚舉字段的下標(biāo),編號。

    {"payStatus":"2"}

  2. 使用字段的Name值

    {"payStatus":"SUCCESS"}

  3. 使用字段的toString方法

    {"payStatus":"支付成功"}

下面這個枚舉。

public enum PayStatus {
    /** 未開始支付 - 0 */
    INIT{
        @Override
        public String toString() {
            return "未開始支付";
        }
    },
    /** 用戶輸入密碼 - 1 */
    USERPAYING{
        @Override
        public String toString() {
            return "用戶輸入密碼";
        }
    },
    /** 支付成功 - 2 */
    SUCCESS{
        @Override
        public String toString() {
            return "支付成功";
        }
    }
    ;
}

實體類

public class TestModel {
    
    @Enumerated(value=EnumType.ORDINAL)
    private PayStatus payStatus;

    public PayStatus getPayStatus() {
        return payStatus;
    }
    public void setPayStatus(PayStatus payStatus) {
        this.payStatus = payStatus;
    }
    
}

具體的實現(xiàn),我們來倒著說

  • 第三種,使用字段的toString方法

    直接在實體類上,說明解析的時候使用toString方法

    @Enumerated(value=EnumType.ORDINAL)
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString)
    private PayStatus payStatus;
    
  • 第二種,使用字段的Name值

    這種的默認(rèn)就序列化為使用name值,也就是 INIT 、 USERPAYING 、SUCCESS

    這個也可以主動標(biāo)識一下,如下

    @Enumerated(value=EnumType.ORDINAL)
    @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingName)
    private PayStatus payStatus;
    
  • 第一種,直接使用序號。

    ? 當(dāng)我們這個字段不需要解析成枚舉中的值,也就是想直接讀取數(shù)據(jù)庫中存的數(shù)字。

    ? 但是試了多個方法都沒在字段上直接加注解實現(xiàn),看了官方文檔的說明,可以在json序列化的時候,全局的使用這種方法。

    ? 這樣使用后,不跟注解的說明沖突,可以混合使用。

    int features= SerializerFeature.config(JSON.DEFAULT_GENERATE_FEATURE, SerializerFeature.WriteEnumUsingName, false);
    return JSON.toJSONString(object,features, SerializerFeature.EMPTY);
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容