精品欧美一区二区三区在线观看 _久久久久国色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)

精品电影一区二区| 91亚洲精品久久久蜜桃网站 | 香蕉久久国产av一区二区| 午夜久久99| 亚洲精品在线网站| 欧美视频第一区| av男人的天堂在线| 国产乱码字幕精品高清av| 欧美国产高跟鞋裸体秀xxxhd| 自拍偷拍激情视频| 忘忧草在线日韩www影院| 久久免费午夜影院| 欧洲美女7788成人免费视频| 国产成人免费观看网站| 亚洲日本在线观看视频| 1区2区3区国产精品| 国产高清在线一区| 中文字幕一区在线播放| 国产精品99久久精品| 欧美mv日韩mv| 亚洲国产精品毛片av不卡在线| 日本中文字幕在线观看| 国产成人aaa| 青青草成人在线| 国产精品三区在线观看| 蜜乳av综合| 在线综合+亚洲+欧美中文字幕| 亚洲人精品午夜射精日韩| 在线播放日本| 国产.欧美.日韩| 88xx成人精品| 久久久免费观看| 久久久久xxxx| sm性调教片在线观看| 一区在线观看免费| 欧美一二三四五区| 亚洲老妇色熟女老太| 日韩精品电影在线观看| 色在人av网站天堂精品| av永久免费观看| 国产成人精品福利| 欧美伦理视频网站| 日本一极黄色片| 丁香花在线电影小说观看| 中文幕一区二区三区久久蜜桃| 国产自产精品| 国产精品久久影视| 日韩电影一二三区| 欧美亚洲另类制服自拍| 日韩成人毛片视频| 久久中文字幕av| 日韩av在线高清| 免费一级特黄录像| 成人免费看视频网站| 亚洲一区二区三区在线| 日本不卡一区二区三区四区| 成年人视频免费在线观看| 99精品久久只有精品| 亚洲最大的av网站| 影音先锋国产资源| 日韩精品1区2区3区| 热久久视久久精品18亚洲精品| 九九视频免费在线观看| 欧美hd在线| 色香阁99久久精品久久久| 成人在线一级片| 九九综合在线| 国产亚洲精品久久久久久牛牛| 少妇性l交大片7724com| 亚洲wwww| 欧美午夜一区二区| 黄色aaa级片| 九九九精品视频| 欧美日韩综合不卡| 不卡的av中文字幕| 久久久久毛片| 欧美日韩高清在线播放| 日韩精品视频一二三| 国产国产一区| 在线播放视频一区| 久久无码人妻一区二区三区| 精品国产一区二| 日韩欧美中文字幕精品| 精品人妻无码中文字幕18禁| 日韩一二三区在线观看| 日韩一区二区三区精品视频| 在线观看一区二区三区视频| 日韩视频1区| 日韩欧美色综合| 日本一级大毛片a一| 国产精品久久久久av蜜臀 | 中文字幕一区二区人妻电影| 99av国产精品欲麻豆| 国内揄拍国内精品| 国产乱国产乱老熟| 蜜桃久久久久久久| 成人激情黄色网| www.日韩在线观看| jizz一区二区| 亚洲免费视频一区| 色婷婷视频在线观看| 午夜久久电影网| 国产av国片精品| 一区二区三区电影大全| 一本到不卡精品视频在线观看 | 国产成人无码aa精品一区| 狠狠爱综合网| 欧美亚州一区二区三区| 亚洲怡红院av| 丁香婷婷深情五月亚洲| 欧美二区三区| 日本不卡三区| 亚洲1区2区3区视频| 欧美一区二区三区爽大粗免费| 666av成人影院在线观看| 欧美精品18+| 中文字幕影片免费在线观看| 久久99久久人婷婷精品综合| 日韩精品在线看| 国产精品酒店视频| 国内揄拍国内精品久久| 国产精品免费看久久久香蕉 | 久久精品av麻豆的观看方式| 成人激情直播| eeuss影院在线观看| 洋洋av久久久久久久一区| 免费在线观看毛片网站| 国产精品一区二区三区av| 精品亚洲男同gayvideo网站 | 黑人精品一区二区| 国产欧美一区二区三区鸳鸯浴| 亚洲第一精品区| 欧美黑人粗大| 精品人在线二区三区| 亚洲av成人无码久久精品 | 国产精品538一区二区在线| 麻豆一区区三区四区产品精品蜜桃| 蜜芽在线免费观看| 一本久道久久综合中文字幕| 色欲欲www成人网站| 久久免费大视频| 国产91|九色| 亚洲伦理在线观看| 亚洲视频一区在线| 在线观看国产中文字幕| 蜜桃a∨噜噜一区二区三区| 国内偷自视频区视频综合| 波多野结衣不卡| 国产成人av福利| mm131午夜| 欧美日韩va| 在线观看视频99| 国产99免费视频| 久久蜜桃一区二区| 自慰无码一区二区三区| 加勒比久久高清| 欧美激情综合色| 精品国产亚洲AV| 亚洲免费观看视频| 伊人五月天婷婷| 久久久久久久久久久久久久| 国产精品视频免费在线| 成人免费在线电影| 欧美日韩国产一区二区三区| 中国特级黄色大片| 国产精品多人| 国产精品乱码一区二区三区| 久久国产精品黑丝| 精品欧美一区二区久久| 国产在线一区视频| av电影天堂一区二区在线观看| 黄色一级片黄色| 加勒比色综合久久久久久久久| 国内精品小视频| 视频福利在线| 在线观看网站黄不卡| 人人人妻人人澡人人爽欧美一区| 亚洲精品女人| 九9re精品视频在线观看re6 | 久久人91精品久久久久久不卡| 亚洲成a人片在线| 亚洲福利视频导航| 日韩片在线观看| 日韩精品一二区| 亚洲精品国产精品国自产| 久久久免费人体| 欧美日韩ab片| 日本电影一区二区在线观看 | 91在线观看喷潮| 亚洲色图.com| 超碰caoprom| 亚洲欧美日韩国产一区| 久久久婷婷一区二区三区不卡| segui88久久综合| 精品性高朝久久久久久久| 在线视频精品免费| 亚洲日本丝袜连裤袜办公室| 稀缺小u女呦精品呦| 久久国产高清| 制服丝袜综合日韩欧美| 老司机aⅴ在线精品导航| 国产成人综合久久| 91香蕉在线观看| 日韩精品中文字幕在线播放| 黄色大全在线观看| 一区二区三区四区在线免费观看 | 亚洲高清免费观看高清完整版| 日韩欧美一区二区一幕| 亚洲国产精品精华液ab| 成人免费播放视频| 夜夜爽av福利精品导航| 一区二区三区四区| 极品国产人妖chinesets亚洲人妖| 国产精品久久久久久久久免费看| www.中文字幕久久久| 欧美另类z0zxhd电影| 亚洲天堂日韩av| 国产精品私房写真福利视频| 深田咏美中文字幕| 蜜桃av噜噜一区二区三区小说| 欧美极品少妇无套实战| 成久久久网站| 国产日韩久久| 91精品亚洲一区在线观看| 久久人人看视频| 亚洲搞黄视频| 日韩福利视频在线观看| 国产女人18毛片水18精| 色综合久久综合网97色综合| 无码人妻精品一区二区三区夜夜嗨| 97久久超碰国产精品| 特黄特黄一级片| 日本不卡不码高清免费观看| 国产手机免费视频| 国产精品成人av| 国产精品亚洲综合| 精品久久久久久久久久岛国gif| 茄子视频成人在线| 欧美在线极品| 欧美激情欧美激情在线五月| 日本在线观看| 国产亚洲欧洲高清| 亚洲色大成网站www| 欧美xfplay| 国产av无码专区亚洲av| 欧美日韩在线不卡| 亚洲一区欧美在线| 一区二区三区日韩精品| 人成免费在线视频| 国产日产精品一区| 90岁老太婆乱淫| 97久久超碰国产精品电影| 亚洲精品久久一区二区三区777| 久久国产成人午夜av影院| wwwwww.色| 日韩中文字幕亚洲一区二区va在线| 人妻互换免费中文字幕| 日韩国产一区二区三区| 狠狠色噜噜狠狠狠狠色吗综合| 一区二区三区四区精品视频| 亚洲在线观看视频网站| 99精品美女视频在线观看热舞| 国产精品视频色| 在线成人av观看| 欧美一级电影免费在线观看| 98色花堂精品视频在线观看| 久久久久久国产三级电影| 日韩伦理电影网站| 久久精品中文字幕一区| 超碰在线影院| 久久久成人的性感天堂| 国产视频中文字幕在线观看| 美女啪啪无遮挡免费久久网站| 男人影院在线观看| 日韩在线观看免费高清完整版| 日本蜜桃在线观看| 欧美日韩福利视频| 免费看男女www网站入口在线| 69国产精品成人在线播放| 麻豆理论在线观看| 91国内精品久久| 不卡一二三区| 国产精品久久久久久久久久久新郎 | 操你啦在线视频| 欧美日韩国产二区| 老司机深夜福利在线观看| 欧美亚洲视频在线看网址| 成人免费短视频| 日韩av电影中文字幕| 成人国产精品| 97神马电影| 校花撩起jk露出白色内裤国产精品| 久热国产精品视频一区二区三区| 啪啪激情综合网| 亚洲欧美精品| 一区二区日韩欧美| 浮妇高潮喷白浆视频| 日本不卡的三区四区五区| 色男人天堂av| 2019国产精品| 神马久久精品综合| 亚洲成人精品一区| 中文字幕精品无| 欧美日韩精品一区二区三区| 国产高清视频免费| 日韩激情在线视频| 免费高清完整在线观看| 午夜精品久久久久久久白皮肤 | 天堂中文资源在线| 日韩在线视频播放| 超级碰碰不卡在线视频| 136fldh精品导航福利| 国产精品99久久久久久董美香| 97超碰资源| 久9久9色综合| 久久www视频| 日本一不卡视频| 一级少妇精品久久久久久久| 国产三级精品视频| 国产探花在线免费观看| 色丁香久综合在线久综合在线观看| 99久久精品国产色欲| 亚洲美女免费精品视频在线观看| 成人video亚洲精品| 日本久久久久久久| 国产精品亚洲欧美一级在线| 久久久久免费网| 中文字幕日韩欧美精品高清在线| 欧美日韩亚洲第一| 成人国产在线观看| www日韩在线| 欧美无人高清视频在线观看| 国产男男gay体育生白袜| 亚洲人成电影在线播放| 精品国产午夜福利| 国产一二精品视频| 免费看黄色三级| 色综合天天综合网国产成人综合天| 精品久久久久久亚洲综合网站| 精品国产拍在线观看| 欧美aaaaaa| 中文字幕一区二区三区四区五区| 日产欧产美韩系列久久99| 久久夜色精品亚洲噜噜国产mv| 超碰在线最新网址| 国产高清精品一区二区三区| 亚洲欧美在线专区| 久久久成人的性感天堂| 日日夜夜操视频| 亚洲视频视频在线| 欧美日韩国产网站| 神马影院我不卡| 麻豆国产欧美一区二区三区| 国产又色又爽又高潮免费| 欧美日韩高清一区二区三区| 国产视频中文字幕在线观看| 91aaaa| 亚洲国产高清一区| 喷水视频在线观看| 色88888久久久久久影院野外| 久草视频在线看| 国产精品亚洲美女av网站| 亚洲xxx拳头交| 人妻av一区二区三区| 香港成人在线视频| 视频一区二区在线播放| 国产精品久久久一区| 91精品一区二区三区综合| 一区二区在线免费观看视频| 五月婷婷综合激情| 黄色av网站在线看| 91精品视频一区| 一区久久精品| japanese中文字幕| 欧美精品久久99久久在免费线 | 国产伦精品一区二区三区视频| 无码内射中文字幕岛国片| 自拍偷拍国产精品| 性猛交xxxx| 国产日韩欧美在线观看| 欧美天天视频| 国产手机在线观看| 69精品人人人人| 国内激情视频在线观看| 一区二区精品国产| 成人黄色大片在线观看| 中文字幕久久久久| 欧美极品少妇全裸体| 国产精品片aa在线观看| 午夜免费一级片| 日韩人在线观看| 亚洲七七久久综合桃花剧情介绍| 久久婷婷人人澡人人喊人人爽| 久久国产精品99精品国产| 五月天婷婷综合网| 另类视频在线观看| 国产尤物久久久| 妖精视频一区二区| 欧美日韩成人综合| 成人欧美magnet|