摘要:系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹本章節(jié)復習的是中的關于對象相關知識。概念概念有三點全稱對象表示法。對象沒有分號,而對象有。序列化對象時,所有函數及原型成員都會被忽略,不體現在結果上。
本文是 重溫基礎 系列文章的第十六篇。
今日感受:靜。
系列目錄:
【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理)
【重溫基礎】1-14篇
【重溫基礎】15.JS對象介紹
本章節(jié)復習的是JS中的關于JSON對象相關知識。
前置知識:
JSON是一種按照JavaScript對象語法的數據格式。
概念有三點:
JSON全稱JavaScript 對象表示法(JavaScript Object Notation)。
JSON 是存儲和交換文本信息的語法。類似 XML。
JSON 比 XML 更小、更快,更易解析。
———— 摘自 W3school JSON教程
JSON 使用 JavaScript 語法來描述數據對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。
2.語法JSON在使用過程中可作為一個對象或者字符串存在,當作為對象時,用于獲取JSON中的數據,而作為字符串時常用于網絡數據傳輸。
JSON語法規(guī)則:
數據在名稱/值對中
數據由逗號分隔
花括號保存對象
方括號保存數組
通常,JSON數據書寫格式是名稱/鍵值:
"name" : "pingan"
而JSON的值可以是 :
數字(整數或浮點數)
字符串(在雙引號中)
邏輯值(true 或 false)
數組(在方括號中)
對象(在花括號中)
null
JSON常常有三種類型:
三種類型:簡單之,對象和數組。
必須注意:JSON字符串必須是雙引號,單引號會語法錯誤。
簡單值可以是字符串:
"hello leo!"
也可以是數字,邏輯值:
12.2 對象類型
內容放在花括號內,是多個鍵值對。
JSON對象 與 js 對象的三個區(qū)別:
JSON對象 必須加雙引號,而 js 對象屬性名可以不加雙引號。
JSON對象 沒有變量聲明,而 js 對象有。
JSON對象 沒有分號,而 js 對象有。
// js 對象 var obj = { name : "pingan", age : "25", }; // json 對象 { "name" : "pingan", "age" : "25", "box" : [ "a","b","c" ] }2.3 數組類型
內容放在方括號內。
JSON數組也沒有分號和變量,常??梢园袹SON數組和對象結合使用,構成更復雜的數據集合。
[ { "name" : "leo", "age" : 25, "box" : ["a","b","c"] }, { "name" : "pingan", "age" : 25, "box" : ["a","b","c"] } ]3. 使用
JSON最常見的用法就是,從服務端獲取JSON數據,再將JSON數據轉成JavaScrip對象使用。
JSON對象有兩個方法:
JSON.stringify(): 序列化操作,將JavaScript對象轉換成JSON字符串。
JSON.prase():反序列化操作,將JSON字符串解析成JavaScript值。
3.1 序列化操作序列化操作常常使用JSON.stringify()。
簡單例子:
let leo = { name : "leo", age : 25, box : ["a","b","c"] } let pingan = JSON.stringify(leo); console.log(pingan); // "{"name":"leo","age":25,"box":["a","b","c"]}"
注意:
默認情況下,JSON.stringify()輸出的JSON字符串不包含任何空格字符或縮進,因此結果就像上面那樣。
序列化JavaScript對象時,所有函數及原型成員都會被忽略,不體現在結果上。
值為undefined的任何屬性都會被跳過。
因此,最終的值都是有效的JSON數據類型的實例屬性。
3.2 反序列化操作序列化操作常常使用JSON.parse()。
簡單例子:
let copyPingan = JSON.parse(pingan); copyPingan; // {name: "leo", age: 25, box: Array(3)}
如果傳入JSON.parse()的字符串不是有效的JSON,則會拋出錯誤。
注意:
雖然pingan和copyPingan屬性相同,但兩者獨立,沒有任何關系。
JSON.stringify()除了要傳入序列化對象作為參數,還可以接收其他兩個參數,用來指定序列化JavaScript對象的方式:
過濾器:可以是個數組,也可以是個函數。
選項:表示是否在JSON字符串中保留縮進。
多帶帶或組合使用兩者,可以更加全面深入的控制JSON的序列化。
4.1 過濾器若過濾器的參數是數組,則JSON.stringify()返回的結果將只包含數組中的屬性:
var leo = { name : "leo", age : 25, box : ["a","b","c"] } var pingan = JSON.stringify(leo,["name","age"]); console.log(pingan); // "{"name":"leo","age":25}"
若過濾器的參數是函數,則情況就不一樣了,傳入的函數需有兩個參數(屬性名和屬性值):
var leo = { "name" : "leo", "age" : 25, "box" : ["a","b","c"] } var pingan = JSON.stringify(leo,function(key, value){ switch(key){ case "name": return "我叫" + value case "age": return value + "歲" default: return value } }); console.log(pingan); // "{"name":"我叫l(wèi)eo","age":"25歲","box":["a","b","c"]}"
注意:使用switch的時候,必須指定default否則會返回undefined。
4.2 選項JSON.stringify()第三個參數是個選項,控制結果中的縮進和空白符。
若選項只有一個值,則表示每個級別縮進的空格數,最大值為10,超過10則只會是10。
var leo = { "name" : "leo", "age" : 25, "box" : ["a","b","c"] } var pingan = JSON.stringify(leo, null, 4); console.log(pingan); /* "{ "name": "leo", "age": 25, "box": [ "a", "b", "c" ] }" */5.解析選項
JSON.parse()可以接收一個函數作為參數,對每個鍵值對調用,為了跟JSON.stringify()的過濾函數區(qū)別,這個函數成為還原函數。
若還原函數返回undefined,則表示要從結果中刪除對應的鍵。
若還原函數返回其他值,則將該值插入結果中。
還原函數接收兩個參數:屬性名和屬性值。
舉例,在日期字符串轉換為Date對象中,經常要用到還原函數:
var leo = { "name" : "leo", "age" : 25, "date" : new Date(1993, 9, 9) } var pingan = JSON.stringify(leo); var copy = JSON.parse(pingan,function (key, value){ // return key == "date" ? new Date(value) : value; if(key == "date"){ return new Date(value); }else{ return value; } }) console.log(copy); // "{"name":"leo","age":25,"date":"1993-10-08T16:00:00.000Z"}"參考文章:
W3school JSON教程
《JavaScrip高級程序設計》
本部分內容到這結束
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推薦 | https://github.com/pingan8787... |
JS小冊 | js.pingan8787.com |
歡迎關注微信公眾號【前端自習課】每天早晨,與您一起學習一篇優(yōu)秀的前端技術博文 .
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/101166.html
摘要:系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹重溫基礎對象介紹重溫基礎介紹重溫基礎相等性判斷本章節(jié)復習的是中的關于閉包,這個小哥哥呀,看看。這里隨著閉包函數的結束,執(zhí)行環(huán)境銷毀,變量回收。 本文是 重溫基礎 系列文章的第十九篇。今日感受:將混亂的事情找出之間的聯系,也是種能力。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】...
摘要:通常在轉換不同數據類型時,相等和不相等會遵循以下規(guī)則若有一個操作數是布爾值,則比較前會將布爾值轉換為數值轉為,轉為。 本文是 重溫基礎 系列文章的第十八篇。今日感受:優(yōu)化自己的代碼,也是很愉快的事情。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1-14篇 【重溫基礎】15.JS對象介紹 【重溫基礎】16.JSON對象介紹 【重溫基礎...
摘要:內存泄露內存泄露概念在計算機科學中,內存泄漏指由于疏忽或錯誤造成程序未能釋放已經不再使用的內存。判斷內存泄漏,以字段為準。 本文是 重溫基礎 系列文章的第二十二篇。 今日感受:優(yōu)化學習方法。 系列目錄: 【復習資料】ES6/ES7/ES8/ES9資料整理(個人整理) 【重溫基礎】1-14篇 【重溫基礎】15.JS對象介紹 【重溫基礎】16.JSON對象介紹 【重溫基礎】1...
摘要:歡迎您的支持系列目錄復習資料資料整理個人整理重溫基礎篇重溫基礎對象介紹重溫基礎對象介紹重溫基礎介紹重溫基礎相等性判斷重溫基礎閉包重溫基礎事件本章節(jié)復習的是中的高階函數,可以提高我們的開發(fā)效率。 本文是 重溫基礎 系列文章的第二十一篇。 今日感受:想家。 本人自己整理的【Cute-JavaScript】資料,包含:【ES6/ES7/ES8/ES9】,【JavaScript基礎...
摘要:本文是重溫基礎系列文章的第二十篇。事件捕獲為截獲事件提供機會,然后實際的目標接收到事件,最后事件冒泡,對事件作出響應。事件處理事件處理,即響應某個事件。包括導致事件的元素事件類型等其他信息。 本文是 重溫基礎 系列文章的第二十篇。 這是第三個基礎系列的第一篇,歡迎持續(xù)關注呀! 重溫基礎 系列的【初級】和【中級】的文章,已經統(tǒng)一整理到我的【Cute-JavaScript】的Java...
閱讀 1290·2021-11-11 16:54
閱讀 1843·2021-10-13 09:40
閱讀 1014·2021-10-08 10:05
閱讀 3571·2021-09-22 15:50
閱讀 3799·2021-09-22 15:41
閱讀 2022·2021-09-22 15:08
閱讀 2420·2021-09-07 10:24
閱讀 3634·2019-08-30 12:52