中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

高碑店網(wǎng)站建設(shè)價(jià)格百度互聯(lián)網(wǎng)營(yíng)銷是什么

高碑店網(wǎng)站建設(shè)價(jià)格,百度互聯(lián)網(wǎng)營(yíng)銷是什么,余姚哪里有做淘寶網(wǎng)站的,施工企業(yè)造價(jià)管理嗨,親愛的同學(xué)們!歡迎來(lái)到這篇關(guān)于 Jackson JSON 解析器中 Java 對(duì)象轉(zhuǎn) JSON 注解的詳細(xì)解析指南。JSON(JavaScript Object Notation)是一種常用于數(shù)據(jù)交換的輕量級(jí)數(shù)據(jù)格式,而 Jackson 作為一款優(yōu)秀的 JSON 解析庫(kù)&am…

在這里插入圖片描述

嗨,親愛的同學(xué)們!歡迎來(lái)到這篇關(guān)于 Jackson JSON 解析器中 Java 對(duì)象轉(zhuǎn) JSON 注解的詳細(xì)解析指南。JSON(JavaScript Object Notation)是一種常用于數(shù)據(jù)交換的輕量級(jí)數(shù)據(jù)格式,而 Jackson 作為一款優(yōu)秀的 JSON 解析庫(kù),通過(guò)注解提供了便捷而強(qiáng)大的方式,讓我們能夠更自由地掌控 Java 對(duì)象與 JSON 之間的轉(zhuǎn)換。在這篇博客中,我將帶你一探 Jackson 注解的奇妙世界,通過(guò)示例代碼揭秘 Java 對(duì)象轉(zhuǎn) JSON 注解的魔法!

什么是 Jackson 注解?

在開始之前,讓我們先簡(jiǎn)要了解一下 Jackson 注解是什么。

Jackson 注解是一組用于配置 Java 對(duì)象序列化和反序列化過(guò)程的注解。通過(guò)在 Java 類或字段上添加這些注解,我們可以指導(dǎo) Jackson 如何處理 JSON 轉(zhuǎn)換。這為我們提供了極大的靈活性,讓我們能夠通過(guò)注解方式定制化 JSON 轉(zhuǎn)換過(guò)程,滿足不同的需求。

基本注解:@JsonProperty

首先,讓我們介紹最基本的注解之一:@JsonProperty。這個(gè)注解用于指定 JSON 字符串中的字段名與 Java 對(duì)象中的字段名之間的映射關(guān)系。

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonPropertyExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建一個(gè)包含 @JsonProperty 注解的對(duì)象JsonPropertyObject jsonPropertyObject = new JsonPropertyObject("Alice", 25);// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(jsonPropertyObject);// 輸出結(jié)果System.out.println(jsonString);}
}

在這個(gè)例子中,JsonPropertyObject 類的字段 name 被注解為 @JsonProperty("fullName"),這意味著在序列化為 JSON 字符串時(shí),字段 name 將以 "fullName" 作為鍵。輸出結(jié)果應(yīng)該是類似于 {"fullName":"Alice","age":25} 的字符串。

定制化日期格式:@JsonFormat

在處理日期類型時(shí),我們常常需要定制化日期的格式。這時(shí),@JsonFormat 就派上用場(chǎng)了。

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;import java.util.Date;public class JsonFormatExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建包含 @JsonFormat 注解的對(duì)象JsonFormatObject jsonFormatObject = new JsonFormatObject(new Date());// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(jsonFormatObject);// 輸出結(jié)果System.out.println(jsonString);}
}

在這個(gè)例子中,JsonFormatObject 類的字段 birthDate 被注解為 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd"),這表示在序列化為 JSON 字符串時(shí),birthDate 將以指定的日期格式呈現(xiàn)。輸出結(jié)果應(yīng)該是類似于 {"birthDate":"2023-01-01"} 的字符串。

忽略字段:@JsonIgnore

有時(shí)候,我們希望在序列化或反序列化過(guò)程中忽略某些字段,這時(shí)可以使用 @JsonIgnore 注解。

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonIgnoreExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建包含 @JsonIgnore 注解的對(duì)象IgnoreFieldObject ignoreFieldObject = new IgnoreFieldObject("Sensitive Data", "Normal Data");// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(ignoreFieldObject);// 輸出結(jié)果System.out.println(jsonString);}
}

在這個(gè)例子中,IgnoreFieldObject 類的字段 sensitiveData 被注解為 @JsonIgnore,這表示在序列化為 JSON 字符串時(shí),sensitiveData 字段將被忽略。輸出結(jié)果應(yīng)該是類似于 {"normalData":"Normal Data"} 的字符串。

支持枚舉:@JsonEnumDefaultValue

在處理枚舉類型時(shí),我們可能會(huì)遇到枚舉值新增但尚未在代碼中處理的情況。這時(shí),@JsonEnumDefaultValue 注解可以幫助我們處理未知的枚舉值。

import com.fasterxml.jackson.annotation.JsonEnumDefaultValue;
import com.fasterxml.jackson.databind.ObjectMapper;public class JsonEnumDefaultValueExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建包含 @JsonEnumDefaultValue 注解的對(duì)象EnumDefaultValueObject enumDefaultValueObject = new EnumDefaultValueObject(EnumWithDefault.UNKNOWN);// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(enumDefaultValueObject);// 輸出結(jié)果System.out.println(jsonString);}
}

在這個(gè)例子中,EnumDefaultValueObject 類的字段 enumValue 被注解為 @JsonEnumDefaultValue,并且指定了默認(rèn)值為 EnumWithDefault.UNKNOWN。這意味著在序列化為 JSON 字符串時(shí),如果枚舉值未知,將使用默認(rèn)值 UNKNOWN

定制化序列化與反序列化:@JsonSerialize@JsonDeserialize

有時(shí)候,我們可能需要對(duì)字段進(jìn)行更復(fù)雜的序列化或反序列化操作,這時(shí)可以使用 @JsonSerialize@JsonDeserialize 注解。

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;public class JsonSerializeDeserializeExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建包含 @JsonSerialize 和 @JsonDeserialize 注解的對(duì)象SerializeDeserializeObject serializeDeserializeObject = new SerializeDeserializeObject("customValue");// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(serializeDeserializeObject);// 輸出結(jié)果System.out.println(jsonString);// 將 JSON 字符串反序列化為對(duì)象SerializeDeserializeObject deserializedObject = objectMapper.readValue(jsonString, SerializeDeserializeObject.class);// 輸出反序列化結(jié)果System.out.println(deserializedObject.getCustomValue());}
}

在這個(gè)例子中,SerializeDeserializeObject 類的字段 customValue 被注解為 @JsonSerialize(using = CustomSerializer.class)@JsonDeserialize(using = CustomDeserializer.class)。這意味著在序列化時(shí)將使用自定義的序列化器 CustomSerializer,而在反序列化時(shí)將使用自定義的反序列化器 CustomDeserializer。

嵌套對(duì)象處理:@JsonManagedReference@JsonBackReference

當(dāng)對(duì)象之間存在雙向關(guān)系時(shí),為了防止無(wú)限遞歸的序列化問(wèn)題,我們可以使用 @JsonManagedReference@JsonBackReference 注解。

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonBackReference;
import com.fasterxml.jackson.databind.annotation.JsonManagedReference;public class JsonReferenceExample {public static void main(String[] args) throws Exception {// 創(chuàng)建一個(gè) ObjectMapper 對(duì)象ObjectMapper objectMapper = new ObjectMapper();// 創(chuàng)建包含 @JsonManagedReference 和 @JsonBackReference 注解的對(duì)象ReferenceParent parent = new ReferenceParent("Parent");ReferenceChild child = new ReferenceChild("Child", parent);// 設(shè)置對(duì)象間的關(guān)系parent.setChild(child);// 將對(duì)象序列化為 JSON 字符串String jsonString = objectMapper.writeValueAsString(parent);// 輸出結(jié)果System.out.println(jsonString);}
}

在這個(gè)例子中,ReferenceParent 類的字段 child 被注解為 @JsonManagedReference,而 ReferenceChild 類的字段 parent 被注解為 @JsonBackReference。這樣,序列化時(shí)將優(yōu)先處理 @JsonManagedReference,而忽略 @JsonBackReference,從而避免了無(wú)限遞歸的問(wèn)題。

小結(jié)

通過(guò)本文的介紹,我們深入探討了 Jackson JSON 解析器中 Java 對(duì)象轉(zhuǎn) JSON 注解的強(qiáng)大功能。從基本的 @JsonProperty 到復(fù)雜的 @JsonSerialize@JsonDeserialize,再到處理對(duì)象間關(guān)系的 @JsonManagedReference@JsonBackReference,Jackson 提供了豐富的注解來(lái)滿足各種需求。希望本文能夠幫助你更好地理解和使用 Jackson 注解,讓 JSON 轉(zhuǎn)換變得更加得心應(yīng)手!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191
http://www.risenshineclean.com/news/11269.html

相關(guān)文章:

  • 網(wǎng)站配色教程正規(guī)推廣賺傭金的平臺(tái)
  • easyphp wordpressseo是什么的簡(jiǎn)稱
  • 免費(fèi)申請(qǐng)網(wǎng)站官網(wǎng)找競(jìng)價(jià)托管公司
  • 緊急通知網(wǎng)頁(yè)升級(jí)自動(dòng)訪問(wèn)升級(jí)南京seo排名
  • java做的k線圖網(wǎng)站源碼下載免費(fèi)建自己的網(wǎng)址
  • dnf怎么做釣魚網(wǎng)站地推app
  • 做網(wǎng)站多少錢一年武漢全網(wǎng)推廣
  • 找人做ps的網(wǎng)站廈門人才網(wǎng)唯一官方網(wǎng)站
  • 第三方網(wǎng)站建設(shè)推廣方案萬(wàn)能模板
  • 怎么自己的電腦做網(wǎng)站服務(wù)器核心關(guān)鍵詞和長(zhǎng)尾關(guān)鍵詞
  • 煙臺(tái)汽車網(wǎng)站建設(shè)關(guān)鍵詞網(wǎng)站排名查詢
  • 網(wǎng)站原型怎么做谷歌搜索引擎363
  • 阿里云怎樣做商城式網(wǎng)站百度免費(fèi)咨詢
  • 備案的網(wǎng)站建設(shè)書是什么意思子域名在線查詢
  • 鄭州富士康目前狀況關(guān)鍵詞推廣優(yōu)化排名如何
  • 阿里云esc建設(shè)網(wǎng)站杭州網(wǎng)絡(luò)整合營(yíng)銷公司
  • 網(wǎng)絡(luò)推廣SEO優(yōu)化網(wǎng)站建設(shè)百度刷搜索詞
  • 鶴壁網(wǎng)站設(shè)計(jì)東莞網(wǎng)站推廣企業(yè)
  • 自己做網(wǎng)站推廣搜索推廣平臺(tái)有哪些
  • 將網(wǎng)站做成logo怎么做網(wǎng)店無(wú)貨源怎么做
  • 網(wǎng)絡(luò)營(yíng)銷外包推廣價(jià)格seo營(yíng)銷軟件
  • 網(wǎng)站屬性設(shè)置互聯(lián)網(wǎng)平臺(tái)
  • 嘉興seo網(wǎng)站建設(shè)費(fèi)用百度指數(shù)搜索指數(shù)的數(shù)據(jù)來(lái)源
  • 如何做國(guó)外網(wǎng)站彩票的推廣網(wǎng)絡(luò)營(yíng)銷策劃書總結(jié)
  • 上海英文網(wǎng)站建設(shè)公司中國(guó)工商業(yè)聯(lián)合會(huì)
  • 免費(fèi)建站的手機(jī)app怎么做表格
  • 網(wǎng)站開發(fā) 深圳seo輿情優(yōu)化
  • 企業(yè)網(wǎng)站怎做seo技術(shù)培訓(xùn)東莞
  • 盧灣區(qū)網(wǎng)站建設(shè)制作網(wǎng)絡(luò)整合營(yíng)銷理論
  • 個(gè)人建網(wǎng)站的步驟網(wǎng)站內(nèi)容優(yōu)化方法