json格式
一、JSON的全稱
JSON的全稱是JavaScriptObjectNotation
二、為什么需求JSON
JSON有三種格局,每一種寫法都和JS中的數(shù)據(jù)類型很像,能夠很輕松的和JS中的數(shù)據(jù)類型互相轉(zhuǎn)換
三、JSON的三種格局
(一)、簡(jiǎn)略值的形式:JSON的簡(jiǎn)略值的格局對(duì)應(yīng)著JS中的根底數(shù)據(jù)類型:數(shù)字字符串布爾值
注意事項(xiàng):
JSON中沒有undefined
JSON中的字符串有必要使用雙引號(hào)
JSON中是不能用注釋的
(二)、目標(biāo)形式:對(duì)應(yīng)著JS中的目標(biāo)
注意事項(xiàng):
JSON中目標(biāo)的特點(diǎn)名有必要是雙引號(hào),特點(diǎn)值如果是字符串也有必要是雙引號(hào)
JSON只要涉及到字符串就有必要使用雙引號(hào),不支持undefined
(三)、數(shù)組形式
JSON的數(shù)組形式對(duì)應(yīng)著JS中的數(shù)組形式
注意事項(xiàng):
數(shù)組中的字符串有必要使用雙引號(hào)
JSON中只要涉及到字符串就有必要使用雙引號(hào)
不支持undefined
在這里刺進(jìn)圖片描繪
四、JSON的常用辦法
JSON.parse():能夠?qū)SON格局的字符串解析成JS中對(duì)應(yīng)的值,必定要是合法的字符串否則會(huì)報(bào)錯(cuò)
在這里刺進(jìn)圖片描繪
在這里刺進(jìn)圖片描繪
JSON.stringify():能夠?qū)S中的數(shù)據(jù)類型、目標(biāo)或數(shù)組轉(zhuǎn)換成JSON格局的字符串.
json數(shù)據(jù)格式示例
JSON(JavaScriptObjectNotation),是一種數(shù)據(jù)交互格局。
為什么有這個(gè)技能
Json之前,咱們都用XML傳遞數(shù)據(jù)。XML是一種純文本格局,所以適合在網(wǎng)絡(luò)上交換數(shù)據(jù),可是XML格局比較復(fù)雜,總算道格拉斯·克羅克福特(DouglasCrockford)發(fā)明晰JSON這種超輕量級(jí)的數(shù)據(jù)交換格局。
JSON如何運(yùn)用
-數(shù)據(jù)格局
JSON實(shí)際上是JavaScript的一個(gè)子集,所以JSON的數(shù)據(jù)格局和JavaScript是對(duì)應(yīng)的:
-number=>JSnumber
-boolean=>JSboolean
-string=>JSstring//
-null=>JSnull
-array=>JSArray的表達(dá)方法[]
-object=>JS{}表達(dá)式
-注意事項(xiàng)
JSON規(guī)定字符集是UTF-8,字符串有必要運(yùn)用””,Object的鍵也有必要運(yùn)用””
數(shù)組或目標(biāo)的最后一個(gè)成員,不能加逗號(hào)
-JS內(nèi)置兩個(gè)Json方法
JSON.stringify({},[],””)
//參數(shù)一:要序列化的數(shù)據(jù)(object)
//參數(shù)二:操控目標(biāo)的鍵值,只想輸出指定的屬性,傳入一個(gè)數(shù)組
//參數(shù)三:序列化后,打印輸出的格局(一個(gè)Tab,能夠更直觀查看json)
任何把JavaScript變成Json,便是把這個(gè)目標(biāo)序列化為Json字符串,然后才能夠經(jīng)過網(wǎng)絡(luò)傳遞;
收到一個(gè)Json格局的字符串,
1
JSON.parse(json.DATA)//傳入json字符串
假如咱們收到一個(gè)JSON格局的字符串,只需要把它反序列化成一個(gè)JavaScript目標(biāo),就能夠在JavaScript中直接運(yùn)用這個(gè)目標(biāo)了。
實(shí)例:
1.數(shù)組方法[]
[{
“id”:1,
“name”:”xiaoming”
},{
“id”:2,
“name”:”xiaohong”
}]
2.目標(biāo)方法{}
//前后端別離,引薦后端回來給前端數(shù)據(jù)格局
{
“status”:0,//執(zhí)行狀況碼
“msg”:”SUCCESS”,//闡明文字信息,沒有為NULL
“data”:[{//目標(biāo)中嵌套數(shù)組,數(shù)組是回來的數(shù)據(jù),
“id”:1,
“name”:”xiaohong”
},{
“id”:2,
“name”:”xiaoming”
}]
}
3.反例
{“id”:ox16}//不合法,數(shù)值需要是十進(jìn)制
{“name”:underfined}//不合法,沒有該值
[{
“name”:NUll,
“school”:function(){
console.log(“該寫法是過錯(cuò)的”)
}//不合法
}]//json中不能運(yùn)用自定義函數(shù),或體系內(nèi)置函數(shù)