精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

別再用 toString() 了!Spring Boot + Jackson 處理枚舉的七種方式

開發(fā) 前端
在系統(tǒng)開發(fā)中,JSON 作為輕量級(jí)數(shù)據(jù)交換格式被廣泛應(yīng)用,而枚舉(Enum)作為 Java 等語言中表示固定常量集合的類型,其與 JSON 的交互處理至關(guān)重要。

環(huán)境:SpringBoot3.4.2

1. 簡介

在系統(tǒng)開發(fā)中,JSON 作為輕量級(jí)數(shù)據(jù)交換格式被廣泛應(yīng)用,而枚舉(Enum)作為 Java 等語言中表示固定常量集合的類型,其與 JSON 的交互處理至關(guān)重要。傳統(tǒng)場(chǎng)景下,枚舉序列化可能直接輸出其名稱(如 "MALE"),但實(shí)際業(yè)務(wù)中常需更靈活的映射,例如輸出數(shù)字代碼(1)或國際化描述("男")。同時(shí),反序列化時(shí)需根據(jù) JSON 值(如數(shù)字或字符串)精準(zhǔn)匹配枚舉實(shí)例。

本篇文章將詳細(xì)介紹枚舉值在序列化和反序列化過程中的核心處理機(jī)制、常見應(yīng)用場(chǎng)景及最佳實(shí)踐方案。

2.實(shí)戰(zhàn)案例

2.1 準(zhǔn)備環(huán)境

定義性別枚舉類
public enum Gender {
  UNKNOWN(0, "未知的性別"), MALE(1, "男"), FEMALE(2, "女"), UNSTATED(9, "未說明的性別");
  private final int code;
  private final String name;
  Gender(int code, String name) {
    this.code = code;
    this.name = name;
  }
  public int getCode() {
    return code ;
  }
  public String getName() {
    return name ;
  }
}
定義User實(shí)體對(duì)象包括上面的枚舉字段
public record User(String name, int age, Gender gender) {
}

2.2 默認(rèn)輸出枚舉值

@RestController
@RequestMapping("/users")
public class UserController {
  @GetMapping
  public ResponseEntity<User> query() {
    return ResponseEntity.ok(new User("Pack_xg", 33, Gender.MALE)) ;
  }
}

輸出結(jié)果

圖片

2.3 將枚舉序列化為JSON對(duì)象

當(dāng)我們希望將枚舉值序列化為如下格式:

{"code": 1, "name": "男"}

要輸出此格式,我們可以通過如下注解進(jìn)行標(biāo)注枚舉類:

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum Gender {
  // ...
}

輸出結(jié)果

圖片圖片

2.4 枚舉與@JsonValue結(jié)合

控制枚舉序列化輸出的另一種簡單方法是在 getter 方法上使用 @JsonValue 注解。該注解用于指示被注解的訪問器(字段或“getter”方法[非void返回類型、無參數(shù)的方法])的值應(yīng)作為該實(shí)例的單一值進(jìn)行序列化,而非采用常規(guī)的收集屬性值的方式。

修改枚舉類如下:

public enum Gender {
  // ...
  @JsonValue
  public String getName() {
    return name;
  }
}

在我們希望輸出的字段上使用@JsonValue注解。

輸出結(jié)果

圖片圖片

當(dāng)我們將@JsonValue使用到類中的toString時(shí),如下:

public record User(String name, int age, Gender gender) {
  @JsonValue
  public String toString() {
    return "【name = " + this.name + ", age = " + this.age + ", gender = " + this.gender + "】";
  }
}

輸出結(jié)果

圖片圖片

2.5 自定義枚舉序列化

我們可以通過繼承 StdSerializer 的方式,實(shí)現(xiàn)自定義的序列化方式,如下示例:

public class GenderSerializer extends StdSerializer<Gender> {
  public GenderSerializer() {
    super(Gender.class);
  }
  public GenderSerializer(Class<Gender> t) {
    super(t);
  }
  public void serialize(Gender value, JsonGenerator generator, SerializerProvider provider)
      throws IOException, JsonProcessingException {
    generator.writeStartObject() ;
    generator.writeFieldName("label") ;
    generator.writeString(value.name()) ;
    generator.writeFieldName("value") ;
    generator.writeNumber(value.getCode()) ;
    generator.writeEndObject();
  }
}

接著修改Gender枚舉類

@JsonSerialize(using = GenderSerializer.class)
public enum Gender {}

輸出結(jié)果

圖片圖片

2.6 反序列化枚舉

@PostMapping
public ResponseEntity<User> save(@RequestBody User user) {
  return ResponseEntity.ok(user) ;
}
默認(rèn)情況

圖片圖片

我們修改gender值為數(shù)字也同樣可以,如下:

圖片圖片

使用@JsonValue
public enum Gender {
  @JsonValue
  public int getCode() {
    return code;
  }
}
輸出結(jié)果

圖片圖片

這時(shí)候你再換成枚舉的字面量值將會(huì)報(bào)錯(cuò),如下:

圖片圖片

使用@JsonProperty

通過使用此注解,我們只是告訴Jackson將@JsonProperty的值映射到標(biāo)注此值的對(duì)象。如下示例:

修改枚舉類
public enum Gender {
  @JsonProperty("unknow")
  UNKNOWN(0, "未知的性別"),
  @JsonProperty("male")
  MALE(1, "男"), 
  @JsonProperty("female")
  FEMALE(2, "女"), 
  @JsonProperty("unknow_gender")
  UNSTATED(9, "未說明的性別");
}
輸出結(jié)果

圖片圖片

圖片圖片

使用@JsonCreator

該注解用于將構(gòu)造函數(shù)或工廠方法定義為用于實(shí)例化關(guān)聯(lián)類新實(shí)例的指定方法。

修改枚舉類如下:

public enum Gender {
  // ...
  @JsonCreator
  public Gender fromCode(@JsonProperty("gender") int code) {
    for (Gender gender : Gender.values()) {
      if (gender.code == code) {
        return gender;
      }
    }
    throw new IllegalArgumentException("無效的性別代碼: " + code);
  }
}
輸出結(jié)果

圖片圖片

自定義反序列化
定義反序列化類
public class GenderDeserializer extends StdDeserializer<Gender> {
  public GenderDeserializer() {
    super(Gender.class) ;
  }
  @Override
  public Gender deserialize(JsonParser jsonParser, DeserializationContext ctxt)
      throws IOException, JsonProcessingException {
    int gender = jsonParser.getValueAsInt() ;
    for (Gender g : Gender.values()) {
      if (g.getCode() == gender) {
        return g ;
      }
    }
    return null;
  }
}
修改枚舉類
@JsonDeserialize(using = GenderDeserializer.class)
public enum Gender {}

輸出結(jié)果

圖片圖片

責(zé)任編輯:武曉燕 來源: Springboot全家桶實(shí)戰(zhàn)案例
相關(guān)推薦

2025-08-04 01:55:00

2013-01-07 10:14:06

JavaJava枚舉

2025-01-21 08:00:00

限流微服務(wù)算法

2022-03-11 12:31:04

Vue3組件前端

2017-06-14 16:44:15

JavaScript原型模式對(duì)象

2025-08-13 03:00:00

2025-05-19 04:00:00

2022-07-01 08:00:44

異步編程FutureTask

2025-11-03 04:00:00

2020-12-04 10:05:00

Pythonprint代碼

2024-10-08 09:06:01

Spring應(yīng)用程序配置

2025-06-04 02:10:00

2018-06-10 16:31:12

2020-12-02 11:18:50

print調(diào)試代碼Python

2021-06-09 06:41:11

OFFSETLIMIT分頁

2025-02-03 09:00:00

API接口性能

2025-04-08 08:01:31

2024-01-04 12:48:00

Spring

2022-12-23 10:55:09

CIO方式團(tuán)隊(duì)

2025-05-13 08:20:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品一区二区三区不卡| 中文字幕亚洲欧美| 天天夜碰日日摸日日澡性色av| 人妻va精品va欧美va| 男女精品网站| www.日韩.com| 91黄色免费视频| 久久麻豆视频| 午夜精品久久久久久久| 亚洲国产欧洲综合997久久| 精品国产999久久久免费| 国产精品视区| 大胆人体色综合| 欧美亚一区二区三区| 亚洲狼人在线| 福利视频导航一区| 国产精品久久成人免费观看| 亚洲色大成网站www| 精品一区二区免费在线观看| 91精品国产91久久久久久吃药| 97在线观看免费视频| 一本一道久久a久久| 欧美中文字幕一区| 你真棒插曲来救救我在线观看| 国产毛片av在线| 成人精品视频一区| 亚洲一区二区自拍| 中文天堂在线资源| 99热免费精品| 欧美日本精品在线| 蜜桃视频最新网址| 欧美人妖在线| 亚洲精品国产suv| 4438x全国最大成人| 成人毛片免费| 在线看不卡av| aaa毛片在线观看| 国产伦理精品| 亚洲无人区一区| 老司机午夜免费福利视频| 一区二区高清不卡| 亚洲国产精品精华液2区45| 久久精品ww人人做人人爽| 亚洲第一页视频| 国产激情精品久久久第一区二区 | 亚洲欧美国产精品专区久久| 色综合久久久无码中文字幕波多| 日韩av懂色| 欧美日韩一区二区三区视频| 国产日产欧美视频| 天堂а√在线最新版中文在线| 亚洲第一av色| 老子影院午夜伦不卡大全| 污网站在线免费看| 一区二区三区在线观看网站| 精品日韩在线播放| 成人黄色在线电影| 亚洲精选免费视频| 欧美日韩一区二区三区电影| 国产欧美久久久久久久久| 日韩毛片高清在线播放| 中文字幕日韩一区二区三区不卡 | 欧美性在线观看| 草久久免费视频| 免费一级欧美片在线播放| 欧美专区中文字幕| 手机在线看片1024| 日本伊人色综合网| 国产视频999| 99热这里是精品| 成人性生交大片免费看中文| 成人在线免费观看一区| 婷婷在线免费观看| 久久亚洲一级片| 日韩欧美在线一区二区| 国产三区四区在线观看| 中文字幕一区在线观看视频| 一区二区视频国产| 怡红院在线播放| 婷婷六月综合亚洲| 精品免费国产一区二区| 天天综合在线观看| 欧美成人免费网站| 久久亚洲AV成人无码国产野外 | 国产1区2区3区精品美女| 国产精品一区二区免费看| 深夜影院在线观看| 中文字幕二三区不卡| 丰满人妻一区二区三区53号| 九色porny自拍视频在线播放| 色美美综合视频| 五月天中文字幕在线| 99re6热只有精品免费观看| 亚洲欧洲成视频免费观看| 男人晚上看的视频| 亚洲综合丁香| 亚洲伊人第一页| 日韩欧美亚洲系列| 亚洲丝袜自拍清纯另类| 国产h视频在线播放| 欧美一区=区三区| 亚洲精品黄网在线观看| 日韩成人短视频| 久久天天综合| 91亚洲精品一区| 丝袜视频国产在线播放| 亚洲欧美日韩久久| 免费日韩中文字幕| 国产精品任我爽爆在线播放| 中文字幕一区电影| 一区二区三区福利视频| 国产激情视频一区二区三区欧美 | 成人福利网站| 日本精品一级二级| 国产精品久久久久久亚洲av| 久久精品不卡| 欧美在线视频网站| 丰满人妻一区二区三区免费视频| 国产精品二三区| 99色精品视频| 激情小说一区| 欧美激情女人20p| 99久久亚洲精品日本无码 | www.99re7| 美女久久久精品| 蜜桃传媒视频麻豆一区| 91色在线看| 日韩欧美一级二级三级| 欧美色视频一区二区三区在线观看| 欧美亚洲专区| 精品一区日韩成人| 国内高清免费在线视频| 日韩视频123| 人与动物性xxxx| 蜜臀av性久久久久蜜臀aⅴ流畅| 麻豆av一区二区| 日韩av影片| 亚洲精品国精品久久99热一| 国产精品99无码一区二区| 国产馆精品极品| 麻豆视频传媒入口| 激情不卡一区二区三区视频在线| 色香阁99久久精品久久久| 人人爽人人爽人人片av| 2023国产精品自拍| 午夜肉伦伦影院| 窝窝社区一区二区| 国产91精品不卡视频| 香蕉视频成人在线| 欧美午夜宅男影院在线观看| 国产精品一区二区入口九绯色| av成人国产| 蜜桃传媒视频麻豆第一区免费观看 | 午夜亚洲影视| 免费成人深夜夜行视频| 精品国产免费人成网站| 亚洲女人天堂av| 波多野结衣一本一道| 国产欧美一区二区三区在线老狼| 国产视频一区二区三区在线播放| 欧美色图激情小说| 91精品久久久久久| 羞羞视频在线观看免费| 欧美成人一区二区三区 | 在线观看日产精品| 精品熟妇无码av免费久久| 老司机免费视频一区二区三区| 中文字幕乱码一区二区三区| 视频一区视频二区欧美| 久久免费少妇高潮久久精品99| 亚洲色图 校园春色| 欧美在线免费观看视频| 亚洲女人久久久| 成人黄色av网站在线| 欧美xxxxx在线视频| 日韩在线观看| 国产精品乱子乱xxxx| 女生影院久久| 久久久久www| 欧美在线 | 亚洲| 一本大道综合伊人精品热热| 亚洲综合图片一区| 成人高清伦理免费影院在线观看| 国产偷人视频免费| 外国成人激情视频| 精品国产综合| 台湾天天综合人成在线| 97视频在线观看播放| 国产九九在线| 精品久久人人做人人爽| 天天干天天色综合| 亚洲男人的天堂在线aⅴ视频| 污污污www精品国产网站| 日日噜噜夜夜狠狠视频欧美人 | 国产日韩一区二区三区| 黄色精品视频| 久久久综合av| 黄网站免费在线观看| 日韩av中文在线| 国产美女无遮挡永久免费| 一本久道久久综合中文字幕| 免费三级在线观看| 91麻豆精品秘密| 亚洲18在线看污www麻豆| 99伊人成综合| 无颜之月在线看| 日韩精品久久| 久久国产精品一区二区三区| 日本久久久久| 日本老师69xxx| 免费av不卡在线观看| 正在播放欧美一区| 免费看男男www网站入口在线| 欧美一二三四区在线| 看黄色一级大片| 婷婷开心激情综合| 欧美精品入口蜜桃| 亚洲欧洲av在线| 欧美黄色一级生活片| 99精品在线免费| 性一交一黄一片| 精东粉嫩av免费一区二区三区| 国产av无码专区亚洲精品| 亚洲韩日在线| 国产片侵犯亲女视频播放| 97偷自拍亚洲综合二区| 日韩在线第一区| 亚洲小说图片| 精品国产一区二区三区麻豆小说 | 精品欧美乱码久久久久久1区2区| 中文字幕人妻丝袜乱一区三区| 欧美日韩国产在线看| 国产精品99无码一区二区| 一区二区三区日韩在线观看| 91免费公开视频| 综合久久久久久| 在线观看亚洲网站| 国产精品对白交换视频| 黄色片网站在线播放| 中文字幕欧美日韩一区| 午夜影院黄色片| 中文字幕欧美日本乱码一线二线| 91资源在线播放| 国产精品麻豆久久久| 久久日免费视频| 国产精品理论片在线观看| 国产精品久久久久久成人| 欧美国产视频在线| 你懂得视频在线观看| 国产丝袜欧美中文另类| 亚洲成人黄色av| 国产精品蜜臀在线观看| 日韩av片在线免费观看| 国产精品久久午夜| 日韩精品123区| 一区二区三区日韩精品视频| 国产一级av毛片| 精品久久久久久久久中文字幕 | 婷婷在线精品视频| 亚洲一区影音先锋| 久久露脸国语精品国产91| 日韩欧美在线第一页| 波多野结衣视频免费观看| 欧美在线啊v一区| 一级特黄录像免费看| 欧美一区二区大片| 欧美一级一区二区三区| 亚洲女人天堂色在线7777| av一区在线观看| 久久精品在线视频| 波多野结衣乳巨码无在线观看| 欧美在线精品免播放器视频| 国产一区二区三区朝在线观看| 国产精品入口福利| 日本成人手机在线| 欧美凹凸一区二区三区视频| 精品一级毛片| www.亚洲成人网| 亚欧成人精品| 手机免费av片| av午夜一区麻豆| 九九热免费在线| 一区二区三区四区国产精品| 偷偷操不一样的久久| 欧美性猛片xxxx免费看久爱| 国产xxxxxx| 亚洲美女视频网| 黄av在线播放| 欧美一级视频免费在线观看| 日韩五码电影| 黄色99视频| 99热精品久久| av动漫在线观看| 国产成人综合网| 在线观看国产网站| ㊣最新国产の精品bt伙计久久| 国产精品美女毛片真酒店| 欧美日韩在线三区| 日韩中文字幕观看| 日韩在线视频免费观看高清中文| av今日在线| 91精品视频免费| 国产精品一区高清| 精品一区二区三区无码视频| 奇米888四色在线精品| 理论片大全免费理伦片| 国产精品久久久久久久久免费丝袜 | 精品国产户外野外| 国产又粗又长又大视频| 国产午夜精品久久久| 日本资源在线| 91精品久久久久久久久久久| 夜夜春成人影院| 男人添女人荫蒂免费视频| 精品系列免费在线观看| 能免费看av的网站| 亚洲成人福利片| www.日本在线观看| 久久精品亚洲94久久精品| 丝袜美腿诱惑一区二区三区| 粉嫩av四季av绯色av第一区| 99精品在线免费在线观看| 日本新janpanese乱熟| 久久香蕉国产线看观看99| 国产精品23p| 精品黑人一区二区三区久久 | 天天av综合网| 国模吧一区二区三区| 亚洲大奶少妇| 性做爰过程免费播放| 激情深爱一区二区| 亚洲精品自拍视频在线观看| 欧美系列在线观看| 国产黄色片在线观看| 日韩av片永久免费网站| 羞羞色国产精品网站| 鲁一鲁一鲁一鲁一澡| 97久久精品人人做人人爽 | 一区二区三区四区五区精品视频| 亚洲综合中文网| 亚洲一区在线观看免费 | 久久久蜜臀国产一区二区| 日韩欧美亚洲视频| 亚洲国产精久久久久久| 99热99re6国产在线播放| 国产精品我不卡| 亚洲经典自拍| 亚洲精品乱码久久久久久久| 狠狠做深爱婷婷久久综合一区| 少妇精品高潮欲妇又嫩中文字幕 | 巨胸喷奶水www久久久免费动漫| 欧美人与物videos另类| 久久国产精品亚洲77777| 久久丫精品国产亚洲av不卡| 91福利精品第一导航| 成年人在线观看网站| 国产精品一区专区欧美日韩| 国产精品久久占久久| 深夜福利网站在线观看| 亚洲图片欧美色图| 亚洲av电影一区| 国产精品成人av在线| 欧美高清视频手机在在线| 91香蕉视频在线观看视频| 一片黄亚洲嫩模| 日韩三级电影网| 国产欧美中文字幕| 欧美特黄一区| 亚洲国产精品成人综合久久久| 色素色在线综合| 浪潮av一区| 精品综合久久| 久久国产人妖系列| 精品肉丝脚一区二区三区| 日韩精品免费在线视频| 国产精成人品2018| 欧美乱做爰xxxⅹ久久久| 91免费国产在线| 国产精品伦一区二区三区| 久久久亚洲国产天美传媒修理工| 国产a久久精品一区二区三区| 尤物国产在线观看| 亚洲成av人片一区二区三区| 国产精品麻豆一区二区三区| 亚洲最大福利视频网| 午夜在线精品| 波多野结衣爱爱视频| 亚洲欧美日韩精品久久亚洲区| 亚洲精品tv| 97国产精东麻豆人妻电影| 亚洲欧洲精品天堂一级| 日韩在线观看视频一区| 国产精品永久在线| 一本久道久久综合婷婷鲸鱼| 91动漫免费网站| 亚洲免费影视第一页| 日韩一级淫片| av在线无限看| 污片在线观看一区二区 | 538国产精品一区二区免费视频|