SpringMVC中Json數(shù)據(jù)交互處理示例詳解
Json概述
Json構(gòu)成要素
- 基本數(shù)據(jù)類型:JSON 定義了少數(shù)幾個(gè)基本數(shù)據(jù)類型,它們是數(shù)字、布爾值、字符串、數(shù)組、對(duì)象以及 null。這些數(shù)據(jù)類型構(gòu)成了 JSON 處理數(shù)據(jù)的基礎(chǔ),并且它們與大多數(shù)編程語(yǔ)言的原生數(shù)據(jù)類型相兼容。
- 對(duì)象表示:在 JSON 中,對(duì)象是由鍵值對(duì)構(gòu)成的集合,用花括號(hào)括起來(lái)。每個(gè)鍵名后面跟著一個(gè)冒號(hào)和相應(yīng)的值,不同的鍵值對(duì)之間用逗號(hào)隔開(kāi)。對(duì)象的鍵通常使用雙引號(hào)包圍的字符串表示。
- 數(shù)組表示:數(shù)組是值的有序集合,以方括號(hào)括起來(lái)。數(shù)組中的值可以是簡(jiǎn)單類型,也可以是對(duì)象或其他數(shù)組,且數(shù)組可以嵌套。
- 值的多樣性:JSON 的值可以是簡(jiǎn)單類型,也可以是對(duì)象或數(shù)組。這種靈活的結(jié)構(gòu)使得 JSON 能夠高效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
- 字符串的轉(zhuǎn)義:JSON 的字符串必須使用雙引號(hào)括起來(lái),并且可以包含轉(zhuǎn)義字符來(lái)表示那些無(wú)法直接輸入的字符,例如回車符或制表符。
JSON 與 JavaScript 的關(guān)系
- 序列化與反序列化:在 JavaScript 中,可以使用
JSON.stringify()
方法將一個(gè)對(duì)象序列化為 JSON 格式的字符串,而JSON.parse()
方法則可以將一個(gè) JSON 格式的字符串反序列化回一個(gè) JavaScript 對(duì)象。 - 語(yǔ)言無(wú)關(guān)性:盡管 JSON 是基于 JavaScript 的語(yǔ)法,但它是獨(dú)立于語(yǔ)言的。許多其他的編程語(yǔ)言也提供了解析和生成 JSON 數(shù)據(jù)的庫(kù),這體現(xiàn)了 JSON 作為數(shù)據(jù)交換格式的通用性。
JSON 的優(yōu)點(diǎn)
- 可讀性強(qiáng):由于 JSON 采用簡(jiǎn)潔的文本格式,它非常容易被人閱讀和理解,同時(shí)也容易由程序進(jìn)行解析。
- 解析速度快:相較于 XML,JSON 具有更小的體積和更快的解析速度。它的設(shè)計(jì)初衷就是為了提升數(shù)據(jù)交換的效率。
- 跨語(yǔ)言支持:JSON 被廣泛支持的特性使其成為不同編程環(huán)境間理想的數(shù)據(jù)交換格式。無(wú)論是動(dòng)態(tài)語(yǔ)言還是靜態(tài)語(yǔ)言,都能找到相應(yīng)的 JSON 解析庫(kù)。
JSON 的應(yīng)用
- Web 應(yīng)用:在 Web 開(kāi)發(fā)中,JSON 常用于客戶端與服務(wù)器之間的數(shù)據(jù)傳輸。由于其輕量化的特點(diǎn),非常適合于 AJAX 通信。
- API 服務(wù):現(xiàn)代的 Web API,如 RESTful API,通常選擇 JSON 作為其主要的數(shù)據(jù)交換格式,因?yàn)樗?jiǎn)單、靈活且易于擴(kuò)展。
- 配置文件:JSON 格式也被用作應(yīng)用程序的配置文件,它可以存儲(chǔ)應(yīng)用設(shè)置和參數(shù),便于程序讀取和修改
JSON 工具的使用
- 格式化與校驗(yàn):在線的 JSON 工具允許用戶對(duì) JSON 數(shù)據(jù)進(jìn)行格式化和校驗(yàn),幫助開(kāi)發(fā)者快速定位格式錯(cuò)誤并進(jìn)行修正。
- 數(shù)據(jù)轉(zhuǎn)換:一些工具還提供 JSON 到各類編程語(yǔ)言特定數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換功能,例如將 JSON 轉(zhuǎn)換為 Java 或 C# 實(shí)體類。
- 編碼與解碼:對(duì)于特殊編碼需求,例如 URL 編碼或 Base64 編碼,也有相應(yīng)的工具支持 JSON 數(shù)據(jù)的編解碼操作
返回json字符串統(tǒng)一解決
在類上直接使用 @RestController ,這樣子,里面所有的方法都只會(huì)返回 json 字符串了,
不用再每一個(gè)都添加@ResponseBody !我們?cè)谇昂蠖朔蛛x開(kāi)發(fā)中,一般都使用 @RestController ,十分便捷!
例如:
@RestController public class UserController { //produces:指定響應(yīng)體返回類型和編碼 @RequestMapping(value = "/json1") public String json1() throws JsonProcessingException { //創(chuàng)建一個(gè)jackson的對(duì)象映射器,用來(lái)解析數(shù)據(jù) ObjectMapper mapper = new ObjectMapper(); //創(chuàng)建一個(gè)對(duì)象 User user = new User("秦疆1號(hào)", 3, "男"); //將我們的對(duì)象解析成為json格式 String str = mapper.writeValueAsString(user); //由于@ResponseBody注解,這里會(huì)將str轉(zhuǎn)成json格式返回;十分方便 return str; } }
FastJson
fastjson.jar是阿里開(kāi)發(fā)的一款專門(mén)用于Java開(kāi)發(fā)的包,可以方便的實(shí)現(xiàn)json對(duì)象與JavaBean 對(duì)象的轉(zhuǎn)換,實(shí)現(xiàn)JavaBean對(duì)象與json字符串的轉(zhuǎn)換,實(shí)現(xiàn)json對(duì)象與json字符串的轉(zhuǎn)換。 實(shí)現(xiàn)json的轉(zhuǎn)換方法很多,最后的實(shí)現(xiàn)結(jié)果都是一樣的。
fastjson 的 pom依賴!
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.60</version> </dependency>
fastjson 三個(gè)主要的類:
JSONObject 代表 json 對(duì)象
- JSONObject實(shí)現(xiàn)了Map接口, 猜想 JSONObject底層操作是由Map實(shí)現(xiàn)的。
- JSONObject對(duì)應(yīng)json對(duì)象,通過(guò)各種形式的get()方法可以獲取json對(duì)象中的數(shù)據(jù),也可以利用諸如size(),isEmpty()等方法獲取"鍵:值"對(duì)的個(gè)數(shù)和判斷是否為空。其本質(zhì)是通過(guò)實(shí)現(xiàn)Map接口并調(diào)用接口中的方法完成的。
JSONArray 代表 json 對(duì)象數(shù)組
- 內(nèi)部是有List接口中的方法來(lái)完成操作的。
JSON 代表 JSONObject 和 JSONArray 的轉(zhuǎn)化
- JSON類源碼分析與使用
- 仔細(xì)觀察這些方法,主要是實(shí)現(xiàn)json對(duì)象,json對(duì)象數(shù)組,javabean對(duì)象,json字符串之間的相互轉(zhuǎn)化。
總結(jié)
到此這篇關(guān)于SpringMVC中Json數(shù)據(jù)交互處理的文章就介紹到這了,更多相關(guān)SpringMVC Json數(shù)據(jù)交互處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot實(shí)現(xiàn)郵箱驗(yàn)證碼注冊(cè)與修改密碼及登錄功能詳解流程
驗(yàn)證碼作為一種自然人的機(jī)器人的判別工具,被廣泛的用于各種防止程序做自動(dòng)化的場(chǎng)景中。傳統(tǒng)的字符型驗(yàn)證安全性已經(jīng)名存實(shí)亡的情況下,各種新型的驗(yàn)證碼如雨后春筍般涌現(xiàn),今天給大家分享一篇SpringBoot實(shí)現(xiàn)滑塊驗(yàn)證碼2022-11-11Java URL自定義私有網(wǎng)絡(luò)協(xié)議
URI與URL的區(qū)別 一.先來(lái)序言一段 二.協(xié)議的自定義的理解 三.自定義協(xié)議與URL的關(guān)系 四.URL自定義私有協(xié)議實(shí)戰(zhàn) 五.后話,自定義mineType解析器2016-04-04IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟
本文主要介紹了IDEA中將SpringBoot項(xiàng)目提交到git倉(cāng)庫(kù)的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12