最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Jackson核心注解使用詳解

 更新時(shí)間:2025年05月10日 16:54:17   作者:Stay Passion  
這篇文章主要介紹了Java Jackson核心注解的使用,??Jackson核心注解??用于控制Java對(duì)象與JSON之間的序列化、反序列化行為,簡(jiǎn)化字段映射、格式轉(zhuǎn)換與數(shù)據(jù)過濾,需要的朋友可以參考下

前言

在 Java 后端開發(fā)中,Jackson 是最常用的 JSON 序列化/反序列化工具之一。Jackson 提供了一系列功能強(qiáng)大的注解,用于精確控制 JSON 與 Java 對(duì)象之間的映射邏輯。本文將深入講解常用的幾個(gè)核心注解:

  • @JsonProperty:指定字段的 JSON 名稱
  • @JsonIgnore:忽略字段序列化/反序列化
  • @JsonInclude:控制字段是否參與序列化(如 null、空集合等)
  • @JsonFormat:格式化日期時(shí)間
  • @JsonCreator / @JsonValue:自定義對(duì)象的序列化/反序列化邏輯

一、@JsonProperty-指定JSON字段名

默認(rèn)情況下,Jackson 使用 Java 字段名作為 JSON 字段名。但在前后端字段命名不一致時(shí),可以使用 @JsonProperty 顯式指定:

public class User {
    @JsonProperty("user_name")
    private String username;
    // getter/setter
}

輸出 JSON:

{
  "user_name": "Tom"
}

二、@JsonIgnore-忽略字段

@JsonIgnore 用于在序列化或反序列化過程中跳過某些字段,比如密碼、內(nèi)部字段等:

public class Account {
    private String username;
    @JsonIgnore
    private String password;
    // getter/setter
}

輸出 JSON 不包含 password 字段。

三、@JsonInclude-控制是否輸出null或空字段

通過 @JsonInclude 可以控制字段是否輸出。常見選項(xiàng):

  • Include.NON_NULL:忽略 null 值
  • Include.NON_EMPTY:忽略 null、空字符串、空集合等
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Product {
    private String name;
    private String description;
}

當(dāng) description 為 null 時(shí)不會(huì)出現(xiàn)在 JSON 中。

也可以作用于類、字段或全局配置:

@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<String> tags;

四、@JsonFormat-格式化時(shí)間

Java 中的日期類型默認(rèn)序列化為時(shí)間戳。通過 @JsonFormat 可以指定格式和時(shí)區(qū):

public class Event {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date eventTime;
}

輸出 JSON 中的日期格式為:"2025-05-06 16:00:00"

五、@JsonCreator/@JsonValue-自定義序列化與反序列化

1. @JsonCreator:構(gòu)造方法反序列化

當(dāng)對(duì)象沒有默認(rèn)構(gòu)造器,或你希望控制反序列化邏輯時(shí)使用:

public class Currency {
    private String code;
    @JsonCreator
    public Currency(@JsonProperty("code") String code) {
        this.code = code;
    }
    public String getCode() { return code; }
}

2. @JsonValue:自定義序列化值

如果你希望整個(gè)對(duì)象在序列化時(shí)只輸出某個(gè)字段,可以使用 @JsonValue:

public class Status {
    private final String value;
    public Status(String value) {
        this.value = value;
    }
    @JsonValue
    public String getValue() {
        return value;
    }
}

序列化后將只輸出字符串:

"ACTIVE"

六、完整示例

public class User {
    @JsonProperty("user_name")
    private String username;
    @JsonIgnore
    private String password;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String email;
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    // getters and setters
}

七、實(shí)戰(zhàn)項(xiàng)目結(jié)構(gòu)與代碼倉庫

示例接口返回序列化結(jié)果

@RestController
public class UserController {
    @GetMapping("/user")
    public User getUser() {
        User user = new User();
        user.setUsername("alice");
        user.setPassword("123456");
        user.setEmail(null);
        user.setBirthday(new Date());
        return user;
    }
}

八、總結(jié)

Jackson 提供的注解使我們可以精準(zhǔn)控制對(duì)象與 JSON 的映射行為。合理使用 @JsonProperty、@JsonIgnore、@JsonInclude 等注解,不僅可以滿足前后端字段差異需求,還能提升代碼的可讀性與可維護(hù)性。

這些注解在實(shí)際開發(fā)中廣泛應(yīng)用,是每一位 Java 開發(fā)者都應(yīng)掌握的重要工具。如果你希望構(gòu)建更強(qiáng)大的 JSON 數(shù)據(jù)模型控制體系,Jackson 注解體系是你的得力助手。

以上就是Java Jackson核心注解使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Java Jackson核心注解的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java實(shí)現(xiàn)九宮格游戲

    java實(shí)現(xiàn)九宮格游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)九宮格游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • java提供的4種函數(shù)式接口

    java提供的4種函數(shù)式接口

    這篇文章主要介紹了java提供的4種函數(shù)式接口,函數(shù)接口是只有一個(gè)抽象方法的接口,用作?Lambda?表達(dá)式的類型并有且只有一個(gè)抽象方法的接口,下文詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • JAVA常用分布式鎖Redisson詳解

    JAVA常用分布式鎖Redisson詳解

    Redisson分布式鎖通過Lua腳本的原子性、可重入設(shè)計(jì)、Watchdog 自動(dòng)續(xù)期和Pub/Sub 通知機(jī)制,實(shí)現(xiàn)了高效的分布式鎖管理,本文給大家介紹JAVA常用分布式鎖Redisson詳解,感興趣的朋友一起看看吧
    2025-05-05
  • Spring MVC處理參數(shù)中的枚舉類型通用實(shí)現(xiàn)方法

    Spring MVC處理參數(shù)中的枚舉類型通用實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Spring MVC處理參數(shù)中的枚舉類型通用實(shí)現(xiàn)方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧
    2018-11-11
  • 解決FeignClient重試機(jī)制造成的接口冪等性

    解決FeignClient重試機(jī)制造成的接口冪等性

    這篇文章主要介紹了解決FeignClient重試機(jī)制造成的接口冪等性問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java多線程編程之從線程返回?cái)?shù)據(jù)的兩種方法

    java多線程編程之從線程返回?cái)?shù)據(jù)的兩種方法

    從線程中返回?cái)?shù)據(jù)和向線程傳遞數(shù)據(jù)類似。也可以通過類成員以及回調(diào)函數(shù)來返回?cái)?shù)據(jù)。但類成員在返回?cái)?shù)據(jù)和傳遞數(shù)據(jù)時(shí)有一些區(qū)別,下面讓我們來看看它們區(qū)別在哪
    2014-01-01
  • Spring的Eureka續(xù)約(心跳檢測(cè))詳解

    Spring的Eureka續(xù)約(心跳檢測(cè))詳解

    這篇文章主要介紹了Spring的Eureka續(xù)約(心跳檢測(cè))詳解,eureka?client每隔一定的時(shí)間,會(huì)給eureka?server發(fā)送心跳,保持心跳,讓eureka?server知道自己還活著,需要的朋友可以參考下
    2023-11-11
  • java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例

    java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例

    這篇文章主要介紹了java獲取當(dāng)前時(shí)間并格式化代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 結(jié)合Mybatis聊聊對(duì)SQL注入的見解

    結(jié)合Mybatis聊聊對(duì)SQL注入的見解

    這篇文章主要介紹了結(jié)合Mybatis聊聊對(duì)SQL注入的見解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springmvc實(shí)現(xiàn)簡(jiǎn)單的攔截器

    springmvc實(shí)現(xiàn)簡(jiǎn)單的攔截器

    這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)簡(jiǎn)單攔截器的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評(píng)論

嘉禾县| 定南县| 绍兴市| 汪清县| 青海省| 河北省| 岳阳市| 易门县| 壶关县| 高唐县| 凌云县| 新郑市| 莱阳市| 邮箱| 沿河| 贵阳市| 延寿县| 上蔡县| 修文县| 都安| 嘉义市| 泸定县| 皋兰县| 修水县| 安国市| 南康市| 瓮安县| 读书| 湟中县| 义马市| 碌曲县| 九江市| 凉城县| 海盐县| 金阳县| 临颍县| 赤城县| 商南县| 东台市| 枣阳市| 镇江市|