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

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è)注解的常見屬性及其使用場(chǎng)景,包括指定屬性名、控制字段可見性、設(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í)非常有用。
  • 處理字段的可見性: 可以控制字段是否應(yīng)該被序列化或反序列化。
  • 設(shè)置默認(rèn)值: 可以為字段提供默認(rèn)值。
  • 標(biāo)記字段的必需性: 可以指示某個(gè)字段在反序列化過(guò)程中是必需的

1.3.常見屬性

  • value: 指定 JSON 字段的名稱。
  • required: 布爾值,指示在反序列化時(shí)該字段是否是必需的(默認(rèn)為 false)。
  • defaultValue: 指定一個(gè)默認(rèn)值,當(dāng) JSON 數(shù)據(jù)中沒有提供該字段時(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ǔ)言編寫的 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)然也可以手寫get set方法,避免此問(wèn)題

總結(jié)

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

相關(guān)文章

  • Java Random 隨機(jī)數(shù)的用法小結(jié)

    Java Random 隨機(jī)數(shù)的用法小結(jié)

    本文主要介紹了Java Random隨機(jī)數(shù)的用法小結(jié),Random類功能全面,支持生成整數(shù)、浮點(diǎn)數(shù)、布爾值及實(shí)現(xiàn)洗牌等高級(jí)操作,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • Java的HttpClient中使用POST請(qǐng)求傳遞參數(shù)兩種常見方式

    Java的HttpClient中使用POST請(qǐng)求傳遞參數(shù)兩種常見方式

    Apache HttpClient為開發(fā)者提供了豐富的接口,用于管理HTTP連接并執(zhí)行請(qǐng)求,下面這篇文章主要介紹了Java的HttpClient中使用POST請(qǐng)求傳遞參數(shù)兩種常見方式,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • SpringBoot+hutool實(shí)現(xiàn)圖片驗(yàn)證碼

    SpringBoot+hutool實(shí)現(xiàn)圖片驗(yàn)證碼

    本文主要介紹了SpringBoot+hutool實(shí)現(xiàn)圖片驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring核心容器IOC原理實(shí)例解析

    Spring核心容器IOC原理實(shí)例解析

    這篇文章主要介紹了Spring核心容器IOC原理實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 對(duì)SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯的方案

    對(duì)SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯的方案

    最近項(xiàng)目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去,要求對(duì)正式環(huán)境的啟動(dòng)包進(jìn)行安全性處理,防止客戶直接通過(guò)反編譯工具將代碼反編譯出來(lái),本文介紹了如何對(duì)SpringBoot項(xiàng)目Jar包進(jìn)行加密防止反編譯,需要的朋友可以參考下
    2024-08-08
  • Java多線程 兩階段終止模式Two-Phase Termination Patter

    Java多線程 兩階段終止模式Two-Phase Termination Patter

    這篇文章主要介紹了Java多線程 兩階段終止模式Two-Phase Termination Patter,該模式有兩個(gè)角色,分別是Terminator,終止者,負(fù)責(zé)接收終止請(qǐng)求,執(zhí)行終止處理,處理完成后再終止自己。TerminationRequester終止請(qǐng)求發(fā)出者,用來(lái)向Terminator發(fā)出終止請(qǐng)求,需要的朋友可以參考一下
    2021-10-10
  • mybatis新手快速入門以及一些錯(cuò)誤匯總

    mybatis新手快速入門以及一些錯(cuò)誤匯總

    這篇文章主要給大家介紹了關(guān)于mybatis新手快速入門以及一些錯(cuò)誤的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 深度分析java dump文件

    深度分析java dump文件

    java內(nèi)存dump是jvm運(yùn)行時(shí)內(nèi)存的一份快照,利用它可以分析是否存在內(nèi)存浪費(fèi),可以檢查內(nèi)存管理是否合理,當(dāng)發(fā)生OOM的時(shí)候,可以找出問(wèn)題的原因。那么dump文件的內(nèi)容是什么樣的呢?
    2021-05-05
  • Java Stream 的 collect 與 reduce 操作示例詳解

    Java Stream 的 collect 與 reduce 

    在 Java Stream API 中,collect?和?reduce?是兩種強(qiáng)大的終止操作,用于將流中的元素累積為最終結(jié)果,本文將從核心概念、使用場(chǎng)景、性能特性等多個(gè)維度進(jìn)行對(duì)比分析,感興趣的朋友跟隨小編一起看看吧
    2025-09-09
  • 將Map轉(zhuǎn)換回String類型的實(shí)現(xiàn)方式

    將Map轉(zhuǎn)換回String類型的實(shí)現(xiàn)方式

    這篇文章主要介紹了將Map轉(zhuǎn)換回String類型的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評(píng)論

周口市| 彰化市| 韶关市| 永寿县| 乌鲁木齐县| 顺义区| 桐庐县| 珲春市| 柘城县| 高阳县| 灵台县| 余干县| 松溪县| 财经| 永州市| 海门市| 石门县| 调兵山市| 玉龙| 沙湾县| 普兰店市| 塘沽区| 昔阳县| 宜昌市| 扶余县| 光泽县| 金坛市| 界首市| 垦利县| 苍溪县| 六盘水市| 米林县| 咸宁市| 郸城县| 孝昌县| 淳安县| 介休市| 武功县| 宜阳县| 衡水市| 牟定县|