千鋒教育JavaScript全套視頻教程(10天學(xué)會(huì)Js,前端javascrip

JSON:JS對(duì)象表示法
? ? JSON數(shù)據(jù):可以是數(shù)組、對(duì)象、數(shù)組和對(duì)象的結(jié)合
? ? JSON數(shù)據(jù)的存在: ? 前后端的交互主要體現(xiàn)在數(shù)據(jù)上
? ? 無(wú)論后端是什么語(yǔ)言,給到我們前端都是JS能識(shí)別的數(shù)據(jù)形式(JSON數(shù)據(jù))
? ? JSON含義:JSON是一種非常重要的數(shù)據(jù)格式,它并不是編程語(yǔ)言,而是一種可以在服務(wù)器和客戶端之間傳輸?shù)臄?shù)據(jù)格式。
? ? JSON基本語(yǔ)法:
? ? ? ? JSON的頂層支持三種類型的值:
? ? ? ? ? ? 簡(jiǎn)單值:數(shù)值(Number)、字符串(String,不支持單引號(hào))、布爾類型(Boolean)、null類型
? ? ? ? ? ? 對(duì)象值:由key、value組成,key是字符串類型,且必須添加雙引號(hào),值可以是簡(jiǎn)單值、對(duì)象值、數(shù)組值
? ? ? ? ? ? 數(shù)組值:數(shù)組的值可以是簡(jiǎn)單值、對(duì)象值、數(shù)組值
? ? ? ? 注意:
? ? ? ? ? ? 1、復(fù)合類型的值只能是數(shù)組或?qū)ο?,不能是函?shù)、正則表達(dá)式對(duì)象、日期對(duì)象
? ? ? ? ? ? 2、原始類型的值只有四種:字符串、數(shù)值(必須以十進(jìn)制表示)、布爾值和null(不能使用NaN, Infinity, -Infinity和undefined)
? ? ? ? ? ? 3、字符串必須使用雙引號(hào)表示,不能使用單引號(hào)
? ? ? ? ? ? 4、對(duì)象的鍵名必須放在雙引號(hào)里面
? ? ? ? ? ? 5、數(shù)組或?qū)ο笞詈笠粋€(gè)成員的后面,不能加逗號(hào)
? ? JSON序列化:
? ? ? ? 復(fù)雜類型轉(zhuǎn)化成JSON格式的字符串遇到的問(wèn)題:
? ? ? ? ? ? 比如我們希望將一個(gè)對(duì)象保存到localStorage中,但是如果我們直接存放一個(gè)對(duì)象,這個(gè)對(duì)象會(huì)被轉(zhuǎn)化成[object Object] 格式的字符串,并不是我們想要的結(jié)果
? ? ? ? JSON序列化方法:
? ? ? ? ? ? 在ES5中引用了JSON全局對(duì)象,該對(duì)象有兩個(gè)常用的方法:
? ? ? ? ? ? ? ? @1、stringify方法:將JavaScript類型轉(zhuǎn)成對(duì)應(yīng)的JSON字符串
? ? ? ? ? ? ? ? ? ? 語(yǔ)法:JSON.stringify(value[, replacer [, space]])
? ? ? ? ? ? ? ? ? ? ? ? value:將要序列化成 一個(gè)JSON字符串的JavaScript對(duì)象或值
? ? ? ? ? ? ? ? ? ? ? ? replacer 可選,用于處理將要序列化的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? replacer參數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1、如果是null、undefined或其他類型,則被忽略,不做處理
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、如果是一個(gè)數(shù)組,則只有包含在這個(gè)數(shù)組中的屬性名,才會(huì)最終被序列化到結(jié)果字符串中,只對(duì)對(duì)象的屬性有效,對(duì)數(shù)組無(wú)效
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、如果是一個(gè)函數(shù),被序列化的值的每個(gè)屬性都會(huì)經(jīng)過(guò)該函數(shù)的轉(zhuǎn)換和處理
? ? ? ? ? ? ? ? ? ? ? ? space 可選,指定縮進(jìn)用的空白字符串,用于美化輸出
? ? ? ? ? ? ? ? ? ? 返回值: 一個(gè)表示給定值的JSON格式字符串
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? @2、parse方法:解析JSON字符串,轉(zhuǎn)回對(duì)應(yīng)的JavaScript類型
? ? ? ? ? ? ? ? ? ? 語(yǔ)法:JSON.parse(text[, reviver])
? ? ? ? ? ? ? ? ? ? ? ? text:要被解析成的字符串。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果傳入數(shù)字則會(huì)轉(zhuǎn)換成十進(jìn)制數(shù)字輸出。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果傳入布爾值則直接輸出。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 如果傳入null則輸出null。
? ? ? ? ? ? ? ? ? ? ? ? ? ? 不支持其他類型的值,否則報(bào)錯(cuò)。
? ? ? ? ? ? ? ? ? ? ? ? reviver: 可選,轉(zhuǎn)換器, 可以用來(lái)修改解析生成的原始值
? ? ? ? ? ? ? ? ? ? 返回值: JavaScript對(duì)象/值, 對(duì)應(yīng)給定JSON文本的對(duì)象/值