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

JsonProperty及JSONField注解的使用說(shuō)明

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

JsonProperty及JSONField注解的使用

1.JsonProperty

1.1.說(shuō)明

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

Jackson 是一個(gè)流行的 Java 庫(kù),能夠?qū)?Java 對(duì)象轉(zhuǎn)換為 JSON 格式,反之亦然。

1.2.主要功能

  • 指定屬性名: @JsonProperty 可以用來(lái)定義 JSON 中使用的屬性名稱,即使它與 Java 類中的屬性名稱不同。這在需要匹配特定 JSON 格式時(shí)非常有用。
  • 處理字段的可見(jiàn)性: 可以控制字段是否應(yīng)該被序列化或反序列化。
  • 設(shè)置默認(rèn)值: 可以為字段提供默認(rèn)值。
  • 標(biāo)記字段的必需性: 可以指示某個(gè)字段在反序列化過(guò)程中是必需的

1.3.常見(jiàn)屬性

  • value: 指定 JSON 字段的名稱。
  • required: 布爾值,指示在反序列化時(shí)該字段是否是必需的(默認(rèn)為 false)。
  • defaultValue: 指定一個(gè)默認(rèn)值,當(dāng) JSON 數(shù)據(jù)中沒(méi)有提供該字段時(shí)使用。
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 類,下面是其對(duì)應(yīng)的 JSON 表示:

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

2.JSONField

2.1說(shuō)明

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

Fastjson 是一個(gè)高性能的 Java 語(yǔ)言編寫(xiě)的 JSON 處理工具。一般使用fastjson2。

2.2主要功能

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

2.3常用屬性

  • name: 指定 JSON 字段的名稱。
  • serialize: 布爾值,指示該字段是否參與序列化(默認(rèn)為 true)。
  • deserialize: 布爾值,指示該字段是否參與反序列化(默認(rèn)為 true)。
  • format: 用于格式化時(shí)間字段,例如 "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 類,下面是其對(duì)應(yīng)的 JSON 表示:

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

3.使用場(chǎng)景

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

總結(jié)

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

相關(guān)文章

  • java HashMap的keyset實(shí)例

    java HashMap的keyset實(shí)例

    簡(jiǎn)單地說(shuō),在keyset方法返回的set上做修改會(huì)改變?cè)瓉?lái)hashmap,這也許不是你想要的,于是形成一個(gè)隱藏的bug
    2013-04-04
  • java 串口通信詳細(xì)及簡(jiǎn)單實(shí)例

    java 串口通信詳細(xì)及簡(jiǎn)單實(shí)例

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

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

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

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

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

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

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

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

    這篇文章主要介紹了SpringBoot項(xiàng)目多數(shù)據(jù)源及mybatis 駝峰失效的問(wèn)題解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    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加載默認(rèn)配置的實(shí)現(xiàn)代碼

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

    在日常開(kāi)發(fā)過(guò)程中,發(fā)布一些產(chǎn)品或者框架時(shí),會(huì)遇到某些功能需要一些配置才能正常運(yùn)行,這時(shí)我們需要的提供默認(rèn)配置項(xiàng),同時(shí)用戶也能覆蓋進(jìn)行個(gè)性化
    2024-06-06
  • Java解析json報(bào)文實(shí)例解析

    Java解析json報(bào)文實(shí)例解析

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

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

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

最新評(píng)論