欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JsonProperty及JSONField注解的使用說明

 更新時間:2024年12月10日 14:46:16   作者:linab112  
文章介紹了兩個常用的Java庫注解:Jackson的@JsonProperty和Fastjson的@JSONField,它們用于控制Java對象與JSON數(shù)據(jù)之間的序列化和反序列化,文章詳細說明了這兩個注解的常見屬性及其使用場景,包括指定屬性名、控制字段可見性、設置默認值和標記字段的必需性

JsonProperty及JSONField注解的使用

1.JsonProperty

1.1.說明

@JsonProperty 注解是 Jackson 庫中的一個注解,廣泛用于 Java 對象與 JSON 數(shù)據(jù)之間的序列化和反序列化。

Jackson 是一個流行的 Java 庫,能夠?qū)?Java 對象轉換為 JSON 格式,反之亦然。

1.2.主要功能

  • 指定屬性名: @JsonProperty 可以用來定義 JSON 中使用的屬性名稱,即使它與 Java 類中的屬性名稱不同。這在需要匹配特定 JSON 格式時非常有用。
  • 處理字段的可見性: 可以控制字段是否應該被序列化或反序列化。
  • 設置默認值: 可以為字段提供默認值。
  • 標記字段的必需性: 可以指示某個字段在反序列化過程中是必需的

1.3.常見屬性

  • value: 指定 JSON 字段的名稱。
  • required: 布爾值,指示在反序列化時該字段是否是必需的(默認為 false)。
  • defaultValue: 指定一個默認值,當 JSON 數(shù)據(jù)中沒有提供該字段時使用。
import com.fasterxml.jackson.annotation.JsonProperty;

public class Product {

    @JsonProperty(value = "product_id", required = true)
    private int id;

    @JsonProperty(value = "product_name", defaultValue = "Unnamed Product")
    private String name;

    // Getters and Setters...
}

1.4.示例

import com.fasterxml.jackson.annotation.JsonProperty;

public class User {
    
    @JsonProperty("user_id")
    private int id;

    @JsonProperty("user_name")
    private String name;

    @JsonProperty("user_email")
    private String email;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

給定上面的 User 類,下面是其對應的 JSON 表示:

{
    "user_id": 1,
    "user_name": "John Doe",
    "user_email": "john.doe@example.com"
}

2.JSONField

2.1說明

@JSONField 是一個來自于阿里巴巴的 Fastjson 庫的注解,主要用于處理 Java 對象與 JSON 數(shù)據(jù)之間的序列化和反序列化。

Fastjson 是一個高性能的 Java 語言編寫的 JSON 處理工具。一般使用fastjson2。

2.2主要功能

  • 指定字段名稱: @JSONField 可以用來定義在 JSON 中使用的屬性名稱,即使它與 Java 類中的屬性名稱不一致。這對于需要匹配特定 JSON 格式的場景非常有用。
  • 控制序列化/反序列化: 可以控制某個字段是否參與序列化和反序列化。例如,可以通過設置 serializedeserialize 屬性為 false 來排除該字段。
  • 格式化日期: 可以指定日期字段在 JSON 中的格式,這對于日期類型的字段尤為重要。
  • 定義默認值: 在反序列化時,可以指定默認值,以便當 JSON 數(shù)據(jù)中缺少該字段時使用。

2.3常用屬性

  • name: 指定 JSON 字段的名稱。
  • serialize: 布爾值,指示該字段是否參與序列化(默認為 true)。
  • deserialize: 布爾值,指示該字段是否參與反序列化(默認為 true)。
  • format: 用于格式化時間字段,例如 "yyyy-MM-dd"。
import com.alibaba.fastjson.annotation.JSONField;

public class Product {

    @JSONField(name = "product_id", serialize = true, deserialize = true)
    private int id;

    @JSONField(name = "product_name", defaultValue = "Unnamed Product")
    private String name;

    @JSONField(name = "created_at", format = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    // Getters and Setters...
}

2.4示例

import com.alibaba.fastjson.annotation.JSONField;

public class User {
    
    @JSONField(name = "user_id")
    private int id;

    @JSONField(name = "user_name")
    private String name;

    @JSONField(name = "user_email")
    private String email;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

使用上面的 User 類,下面是其對應的 JSON 表示:

{
    "user_id": 1,
    "user_name": "John Doe",
    "user_email": "john.doe@example.com"
}

3.使用場景

避免使用lombok的data注解,導致前端接收的json內(nèi)容的key和后端中bean的id不一致的問題,可以使用上面兩個注解,當然也可以手寫get set方法,避免此問題

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java HashMap的keyset實例

    java HashMap的keyset實例

    簡單地說,在keyset方法返回的set上做修改會改變原來hashmap,這也許不是你想要的,于是形成一個隱藏的bug
    2013-04-04
  • java 串口通信詳細及簡單實例

    java 串口通信詳細及簡單實例

    這篇文章主要介紹了java 串口通信詳細及簡單實例的相關資料,在開發(fā)硬件與軟件結合的時候,就會用到串口,需要的朋友可以參考下
    2017-01-01
  • SpringBoot中的分布式追蹤及使用詳解

    SpringBoot中的分布式追蹤及使用詳解

    隨著互聯(lián)網(wǎng)應用程序的復雜性不斷增加,分布式系統(tǒng)已經(jīng)成為了許多企業(yè)級應用程序的標配,由于服務之間的調(diào)用關系錯綜復雜,很難追蹤到一個請求在整個系統(tǒng)中的執(zhí)行路徑和時間,為了解決這個問題,本文將介紹SpringBoot中的分布式追蹤技術及其使用方法
    2023-07-07
  • Java如果通過jdbc操作連接oracle數(shù)據(jù)庫

    Java如果通過jdbc操作連接oracle數(shù)據(jù)庫

    這篇文章主要介紹了Java如果通過jdbc操作連接oracle數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Java輕松實現(xiàn)表單提交的三種方法

    Java輕松實現(xiàn)表單提交的三種方法

    在Web開發(fā)中,表單是用戶與網(wǎng)站交互的主要方式之一,本文將詳細介紹如何在Java中實現(xiàn)表單提交,并通過代碼和案例為新手朋友提供詳細的指導,有需要的可以參考下
    2024-10-10
  • SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法

    SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法

    這篇文章主要介紹了SpringBoot項目多數(shù)據(jù)源及mybatis 駝峰失效的問題解決方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java操作(DOM、SAX、JDOM、DOM4J)xml方式的四種比較與詳解

    java中四種操作(DOM、SAX、JDOM、DOM4J)xml方式的比較與詳解
    2008-10-10
  • SpringBoot使用spring.factories加載默認配置的實現(xiàn)代碼

    SpringBoot使用spring.factories加載默認配置的實現(xiàn)代碼

    在日常開發(fā)過程中,發(fā)布一些產(chǎn)品或者框架時,會遇到某些功能需要一些配置才能正常運行,這時我們需要的提供默認配置項,同時用戶也能覆蓋進行個性化
    2024-06-06
  • Java解析json報文實例解析

    Java解析json報文實例解析

    這篇文章主要介紹了Java解析json報文實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java常用工具類 XML工具類、數(shù)據(jù)驗證工具類

    java常用工具類 XML工具類、數(shù)據(jù)驗證工具類

    這篇文章主要為大家詳細介紹了java常用工具類,包括XML工具類、數(shù)據(jù)驗證工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05

最新評論