JAVA:淺談JSON與JSON轉換

????????可能有很多人,無論是前端還是后端,無論是JAVA還是Python還是C,都應該跟JSON這種數據格式打過交道,那么有沒有仔細的想過,什么叫JSON?

????????JSON是一種輕量級的數據交換格式。它基于JavaScript語言的對象表示法,但獨立于其語言,幾乎所有的編程語言都可以解析和生成JSON數據。JSON的設計初衷是為了易于人們閱讀和編寫,同時也易于機器解析和生成。

一、JSON的基本結構

它是由兩種結構組成的:對象(object)和數組(array)。
在Java中的JSON處理庫中,通常用 JSONObjectJSONArray 類來表示這兩種結構。?

1.1?JSONObject

JSONObject代表一個JSON中的鍵值對象,這個對象以大括號包圍每個鍵值對使用,隔開鍵與值使用:隔開,一個JSONObject類似于這樣:

  • 對象是一個無序的“鍵/值對”集合。
  • 用花括號 { } 包裹。
  • 鍵必須是字符串,值可以是字符串、數字、布爾值、數組、對象或null。
{"name": "John","age": 30,"isStudent": false,"address": {"street": "123 Main St","city": "New York"}
}

1.2?JSONArray

在JSON中,JSONArray代表一個數組,使用中括號包圍,每個元素使用逗號隔開。一個JSONArray類似于這樣:

  • 數組是一個有序的值集合。
  • 用方括號 [] 包裹。
  • 數組中的值可以是任何類型,包括對象和其他數組。
["Apple","Banana","Cherry"
]

1.3 JSON 的數據類型

JSON支持以下幾種數據類型:

  • 字符串(String):必須用雙引號包圍。例如 "Hello World"
  • 數字(Number):可以是整數或浮點數。例如 42 或 3.14
  • 布爾值(Boolean):表示真或假,取值為 true 或 false
  • 數組(Array):一組有序的值。例如 ["apple", "banana", "cherry"]
  • 對象(Object):一組鍵值對。例如 {"name": "John", "age": 30}
  • null:表示空值。例如 null

1.4?相互關系:

  • JSONObject 和 JSONArray 是JSON數據結構的具體表示。
  • JSONObject 可以包含多個 JSONArray 作為其值,反之亦然,JSONArray 也可以包含多個 JSONObject 作為其元素
  • 它們可以互相嵌套,從而形成復雜的JSON結構。
{"name": "Alice","age": 25,"isStudent": true,"grades": [90, 88, 92],"address": {"street": "456 Elm St","city": "Los Angeles","state": "CA"},"courses": [{"name": "Math", "credits": 3},{"name": "Science", "credits": 4}]
}

我們看到 JSONObject 包含了多個鍵值對,其中一個值是 JSONArray,而 JSONArray 中的一個元素又是另一個 JSONObject。這展示了 JSONObjectJSONArray 如何通過嵌套來表達復雜的數據結構。

二、JSON的轉換

在Java開發中,JSON、Bean、Map、List之間的相互轉換非常常見,通常使用第三方庫如來簡化這些操作,這里我使用Hutool工具包來進行實例。

第一步:引入Hutool

在POM中引入Hutool:

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.17</version>
</dependency>

2.1 Bean,List,Map轉化為JSON

首先看實體類User

然后看我們的工具類:

JSONUtil.toJsonStr 方法可以將任意對象(Bean、Map、集合等)直接轉換為JSON字符串。 如果對象是有序的Map等對象,則轉換后的JSON字符串也是有序的。

?

結果為:

2.2 JSON轉Bean

從SQL中可以查找的一般都直接轉化為對象,但是Redis中經常存儲的都是JSON格式,所以要進行轉換,這里模擬的JSON數據

2.3 JSON轉List

2.4?獲取json中某個字段

2.5 JSON轉化為數組

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14360.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14360.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14360.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初識java——javaSE(6)抽象類與接口【求個關注!】

文章目錄 前言一 抽象類1.1 抽象類的概念1.2 抽象類的語法&#xff1a;1.3 抽象類與普通類的區別&#xff1a; 二 接口2.1 接口的概念2.2 接口的語法2.2.1 接口的各個組成2.2.2 接口之間的繼承 2.3 接口的實現接口不可以實例化對象 2.4 接口實現多態 三 Object類3.1 Object類是…

【shell】腳本練習題

案例&#xff1a; 1. for ping測試指網段的主機 網段由用戶輸入&#xff0c;例如用戶輸入192.168.2 &#xff0c;則ping 192.168.2.10 --- 192.168.2.20 UP&#xff1a; /tmp/host_up.txt Down: /tmp/host_down.txt 2. 使用case實現成績優良差的判斷 1. for ping測試指…

Android異常及解決方式記錄

異常1&#xff1a;Tmp detached view should be removed from RecyclerView before it can be recycled: 解決方法&#xff1a; recycleView.setItemAnimator(null);

第17講:C語言內存函數

目錄 1.memcpy使用和模擬實現2.memmove使用和模擬實現3.memset函數的使用4.memcmp函數的使用 1.memcpy使用和模擬實現 void * memcpy (void * destination, const void * source, size_t num);? 函數memcpy從source的位置開始向后復制num個字節的數據到destination指向的內存…

Python面試寶典:Python中與多線程編程相關的面試筆試題(1000加面試筆試題助你輕松捕獲大廠Offer)

Python面試寶典:1000加python面試題助你輕松捕獲大廠Offer【第二部分:Python高級特性:第十三章:并發編程:第一節:多線程編程】 第十三章:并發編程第一節:多線程編程使用`threading`模塊面試題1面試題2面試題3面試題4面試題5面試題6面試題7面試題8面試題9面試題10更多面…

打豆豆game

好的&#xff0c;我將為您編寫一個簡單的“打豆豆”游戲。這個游戲的基本規則是這樣的&#xff1a; 游戲將生成一個指定大小的網格&#xff0c;每個格子可能包含一個豆豆。玩家可以指定一個格子&#xff0c;如果該格子中有豆豆&#xff0c;則打掉該豆豆&#xff0c;并得分。每…

【Java 開發】模版模式使用模版

在日常開發中&#xff0c;對適合的場景。使用模板模式可以幫助我們抽取公共的東西&#xff0c;使代碼更加優雅。本次寫了一個模版模式的使用模版&#xff0c;方便以后 cv。 本次是以訂單的接受、拒絕、關閉三個操作作為 demo 來寫的模板。 一、定義請求基類&#xff0c;不同操作…

leecode42 DP

自己的暴力想法,把圖形看成一個個碗,一段一段地算,錯誤示例 class Solution { public:int trap(vector<int>& height) {int s height.size();int sum 0,kk1;int flag 0;int p1 -1, p2 -1;for (int i 1; i < s; i) {cout<<p1<<endl;if (p1 >…

網絡安全技術與應用:遠程控制與數據庫安全

實驗準備 軟件&#xff1a;VMware Workstation Pro 虛擬機&#xff1a;Red Hat Enterprise Linux 7 服務器&#xff0c;Red Hat Enterprise Linux 7 客戶端 網絡模式&#xff1a;NAT模式 1、配置服務器及客戶端網絡 服務器IP 客戶端IP 測試相互通信 在客戶機上設置鏡像&#…

【C++刷題】優選算法——遞歸第二輯

全排列 vector<vector<int>> vv; void dfs(vector<int>& nums, vector<int>& v, vector<bool>& check) {if(v.size() nums.size()){vv.push_back(v);return;}for(int i 0; i < nums.size(); i){if(check[i] false){v.push_ba…

pillow學習5

ImageEnhance 模塊 內置的 ImageEnhance 模塊中包含了多個用于增強圖像效果的函數&#xff0c;主要用來調整圖像 的色彩、對比度、亮度和清晰度等&#xff0c;感覺上和調整電視機的顯示參數一樣。 在模塊 ImageEnhance 中&#xff0c;所有的圖片增強對象都實現一個通用的接口。…

nginx的配置以及常見命令

Nginx配置與常用命令指南 Nginx是一個高性能的HTTP和反向代理服務器&#xff0c;也是一個IMAP/POP3/SMTP服務器。由于它的穩定性、豐富的功能集、簡單的配置文件和低資源消耗&#xff0c;Nginx在全球范圍內被廣泛使用。在本文中&#xff0c;我們將介紹Nginx的基本配置和一些常…

車載網絡測試實操源碼_使用CAPL腳本模擬發送符合協議要求(Counter和CRC)的CAN報文

系列文章目錄 車載網絡測試實操源碼_使用CAPL腳本解析hex、S19、vbf文件 車載網絡測試實操源碼_使用CAPL腳本對CAN報文的Counter和CRC進行實時監控 車載網絡測試實操源碼_使用CAPL腳本模擬發送符合協議要求(Counter和CRC)的CAN報文 車載網絡測試實操源碼_使用CAPL腳本實現安全…

利用神經網絡學習語言(四)——深度循環神經網絡

相關說明 這篇文章的大部分內容參考自我的新書《解構大語言模型&#xff1a;從線性回歸到通用人工智能》&#xff0c;歡迎有興趣的讀者多多支持。 本文涉及到的代碼鏈接如下&#xff1a;regression2chatgpt/ch10_rnn/char_rnn_batch.ipynb 《循環神經網絡&#xff08;RNN&…

【移花接木】OpenCV4.8 For Java 深度學習 實時人臉檢測

學習《OpenCV應用開發&#xff1a;入門、進階與工程化實踐》一書&#xff0c;學會本文所有技能就這么簡單&#xff01; 做真正的OpenCV開發者&#xff0c;從入門到入職&#xff0c;一步到位&#xff01; 前言 我寫這篇文章之前&#xff0c;我搜索整個網絡文章跟問各種語言大模…

速賣通測評揭秘:如何選擇安全的渠道操作

許多商家對測評存在誤解&#xff0c;認為只需進行幾次測評就能迅速打造爆款。實際上&#xff0c;測評是一個需要計劃和持久性的過程&#xff0c;以便讓平臺檢測到產品的受眾程度并提高產品的曝光和權重。 在進行測評時&#xff0c;安全是首要考慮的問題。平臺可以通過設備、網…

黑馬點評1——短信篇(基于session)

&#x1f308;hello&#xff0c;你好鴨&#xff0c;我是Ethan&#xff0c;一名不斷學習的碼農&#xff0c;很高興你能來閱讀。 ??目前博客主要更新Java系列、項目案例、計算機必學四件套等。 &#x1f3c3;人生之義&#xff0c;在于追求&#xff0c;不在成敗&#xff0c;勤通…

如何使用多種算法解決LeetCode第135題——分發糖果問題

?????? 歡迎來到我的博客。希望您能在這里找到既有價值又有趣的內容&#xff0c;和我一起探索、學習和成長。歡迎評論區暢所欲言、享受知識的樂趣&#xff01; 推薦&#xff1a;數據分析螺絲釘的首頁 格物致知 終身學習 期待您的關注 導航&#xff1a; LeetCode解鎖100…

WPF 的 style 定義 使用 繼承 復用

style 樣式 如何定義一個 style 樣式 <Button Content"樣式" Width"100" Height"50"><Button.Style><Style></Style></Button.Style></Button>擁有的屬性 targetType “” 針對什么類型生效setter 設置屬…

Ubuntu中 petalinux 安裝 移植linux --tftp/tftp-hpa服務的方法

Xilinx 文檔 PetaLinux 指南&#xff1a;如何創建 PetaLinux 環境 &#xff08;2019.1&#xff09; PetaLinux工具參考指南 PetaLinux安裝詳解(Xilinx , linux, zynq, zynqMP) petalinux 2020.1安裝教程 一、PetaLinux工具和庫安裝 PetaLinux 工具要求主機系統 /bin/sh 為“b…