柚子快報邀請碼778899分享:前端 JSON詳解
柚子快報邀請碼778899分享:前端 JSON詳解
JSON詳解
文章目錄
JSON詳解一、簡介二、JSON的數(shù)據(jù)表示三、序列化和反序列化四、瀏覽器中處理JSON1 、JSON字符串 → 對象2、對象 → JSON字符串
五、FastJSON
一、簡介
JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,易于人類讀寫,也易于機器解析和生成。JSON 基于 JavaScript 語言的一個子集,但獨立于編程語言,可以被多種語言解析和生成,包括 Java、Python、C++ 等。
現(xiàn)在傳輸數(shù)據(jù)的方式更多是采用json的格式,漸漸代替了XML
理解:JSON是一種表示對象的方式,用來傳輸數(shù)據(jù)的一種格式。
二、JSON的數(shù)據(jù)表示
JSON 使用名值對(key-value pairs)的方式來表示數(shù)據(jù)。每個名值對由一個鍵和一個對應的值組成,鍵和值之間使用冒號 : 分隔,多個名值對之間使用逗號 , 分隔。名值對通常用于對象中,使用花括號 {} 包圍。
符號描述示例{}表示對象{name : ‘小雷’ , age:23}[{},{},{}]表示對象數(shù)組[ {name : ‘小雷’ , age:23} , {name : ‘小楊’ , age:22} ]
注意:
JSON的本質(zhì)就是一串字符串,只不過元素(數(shù)據(jù))會使用特定的符號標注鍵和值之間用 “ :” 隔開鍵值對之間用 “ ,” 隔開支持無限層嵌套單引號’'和雙引號""都可以表示字符串。
三、序列化和反序列化
JSON的序列化和反序列化是將對象和JSON字符串相互轉(zhuǎn)換的過程。序列化是將對象轉(zhuǎn)換為JSON字符串,反序列化是將JSON字符串轉(zhuǎn)換為對象。
1、序列化
序列化(Serialization)是將對象轉(zhuǎn)換為JSON字符串的過程。這在需要將數(shù)據(jù)傳輸?shù)絎eb服務器或存儲到文件時非常有用。
var obj = { name: "John", age: 30, city: "New York" };
var jsonString = JSON.stringify(obj);
console.log(jsonString); // {"name":"John","age":30,"city":"New York"}
2、反序列化
反序列化(Deserialization)是將JSON字符串轉(zhuǎn)換回對象的過程。這在從Web服務器接收數(shù)據(jù)或從文件讀取數(shù)據(jù)時非常有用。
var jsonString = '{"name":"John","age":30,"city":"New York"}';
var obj = JSON.parse(jsonString);
console.log(obj.name); // John
理解:
序列化 將對象轉(zhuǎn)換為 JSON 字符串,適用于數(shù)據(jù)傳輸和存儲。反序列化 將 JSON 字符串轉(zhuǎn)換為對象,適用于從數(shù)據(jù)源讀取數(shù)據(jù)。
四、瀏覽器中處理JSON
1 、JSON字符串 → 對象
1.1 使用JSON.parse()函數(shù)將JSON格式字符串解析為JavaScript對象 :
注意:(有坑)
1. 字符串的數(shù)據(jù)格式:所有屬性必須用雙引號引住,因為使用JSON.parse需嚴格遵守JSON規(guī)范。
2. 單引號與雙引號 :使用單引號嵌套雙引號的方式 ' '{"name":"你好啊,小雷","age":23}';
1.2 使用JSON.eval()函數(shù)將JSON格式字符串解析為JavaScript對象
原因:使用JSON.parse()來解析JSON字符串,需要注意的是被轉(zhuǎn)化的字符串里面的屬性要使用引號,并且總體是單引號套雙引號的方式,太麻煩了。 如果使用eval() 就可以忽略上述兩點需要注意的地方
理解:eval(str)會將函數(shù)的參數(shù)作為JavaScript代碼去執(zhí)行
注意:(還是有坑)
使用()包裹JSON字符串
“[{‘name’:‘你好啊,小雷’,‘a(chǎn)ge’:23},{‘name’:‘你好啊,小楊’,‘a(chǎn)ge’:22}]”
原因:eval本身的問題。 由于json是以”{}”的方式來開始以及結束的。在JavaScript中,它會被當成一個語句塊來處理,所以必須強制性的將它轉(zhuǎn)換成一種表達式。加上圓括號的目的是迫使eval函數(shù)在處理JavaScript代碼的時候強制將括號內(nèi)的表達式轉(zhuǎn)化為對象,而不是作為代碼來執(zhí)行。
2、對象 → JSON字符串
2.1 js對象轉(zhuǎn)JSON
2.2 JS數(shù)組轉(zhuǎn)JSON
五、FastJSON
1、定義:FastJson:阿里的開源框架,被不少企業(yè)使用,是一個極其優(yōu)秀的Json框架,使用此框架必須在項目中導入框架包(fastjson-1.1.33.jar), 它提供了快速的 JSON 序列化和反序列化功能。
2、特點:
高性能:FastJSON 在序列化和反序列化 JSON 數(shù)據(jù)時速度非???,通常比其他 JSON 庫更快。簡單易用:API 設計簡潔,使用方便。支持多種數(shù)據(jù)格式:支持 JSON 對象、數(shù)組、Map、List 等常見數(shù)據(jù)結構。強大的功能:包括 JSONPath、自動類型識別、循環(huán)引用檢測等。
3、FastJson對于json格式字符串的解析主要用到了下面三個類:
JSON:FastJSON的解析器,用于JSON格式字符串與JSON對象及javaBean之間的轉(zhuǎn)換JSONObject:FastJSON提供的json對象JSONArray:FastJSON提供json數(shù)組對象
強大的功能:包括 JSONPath、自動類型識別、循環(huán)引用檢測等。
3、FastJson對于json格式字符串的解析主要用到了下面三個類:
JSON:FastJSON的解析器,用于JSON格式字符串與JSON對象及javaBean之間的轉(zhuǎn)換JSONObject:FastJSON提供的json對象JSONArray:FastJSON提供json數(shù)組對象
柚子快報邀請碼778899分享:前端 JSON詳解
相關閱讀
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權,聯(lián)系刪除。