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

Java Jackson核心注解使用詳解

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

前言

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

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

一、@JsonProperty-指定JSON字段名

默認(rèn)情況下,Jackson 使用 Java 字段名作為 JSON 字段名。但在前后端字段命名不一致時,可以使用 @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 可以控制字段是否輸出。常見選項:

  • 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 時不會出現(xiàn)在 JSON 中。

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

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

四、@JsonFormat-格式化時間

Java 中的日期類型默認(rèn)序列化為時間戳。通過 @JsonFormat 可以指定格式和時區(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)對象沒有默認(rèn)構(gòu)造器,或你希望控制反序列化邏輯時使用:

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

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

如果你希望整個對象在序列化時只輸出某個字段,可以使用 @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
}

七、實戰(zhàn)項目結(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)控制對象與 JSON 的映射行為。合理使用 @JsonProperty、@JsonIgnore、@JsonInclude 等注解,不僅可以滿足前后端字段差異需求,還能提升代碼的可讀性與可維護(hù)性。

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

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

相關(guān)文章

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

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

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

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

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

    JAVA常用分布式鎖Redisson詳解

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

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

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

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

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

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

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

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

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

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

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

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

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

    springmvc實現(xiàn)簡單的攔截器

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

最新評論

武隆县| 安徽省| 嘉祥县| 定南县| 乾安县| 怀安县| 巍山| 南宫市| 云龙县| 安平县| 都江堰市| 喜德县| 修水县| 宁津县| 叙永县| 栖霞市| 新蔡县| 汉川市| 安阳县| 梁山县| 阿鲁科尔沁旗| 禄丰县| 保康县| 冷水江市| 丁青县| 家居| 安陆市| 梨树县| 离岛区| 迭部县| 安徽省| 自贡市| 临夏市| 临沂市| 紫金县| 德惠市| 息烽县| 当雄县| 句容市| 澄城县| 大同市|