json總結(jié)

1.JSON的定義

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,它完全獨(dú)立于語(yǔ)言的文本格式。

  • 很多JavaScript開(kāi)發(fā)人員都錯(cuò)誤地把JavaScript對(duì)象字面量(Object Literals)稱(chēng)為JSON對(duì)象(JSON Objects),但是該規(guī)范里也明確地說(shuō)了JSON只是一個(gè)數(shù)據(jù)交換格式,只有我們將之用在string上下文的時(shí)候它才叫JSON。
  • 何時(shí)是JSON,何時(shí)不是JSON

{ "prop": "val" } 這樣的聲明有可能是JavaScript對(duì)象字面量也有可能是JSON字符串,取決于什么上下文使用它,如果是用在string上下文(用單引號(hào)或雙引號(hào)引住,或者從text文件讀?。┑脑?huà),那它就是JSON字符串,如果是用在對(duì)象字面量上下文中,那它就是對(duì)象字面量。

// 這是JSON字符串var 
foo = '{ "prop": "val" }'; 

// 這是對(duì)象字面量
var bar = { "prop": "val" };

2.JSON和JavaScript的關(guān)系

JSON 用來(lái)序列化對(duì)象、數(shù)組、數(shù)值、字符串、布爾值和 null 。它基于 JavaScript 語(yǔ)法,但與之不同:JavaScript不是JSON,JSON也不是JavaScript。

  • JavaScript 與 JSON 的區(qū)別
JS類(lèi)型 JSON 的不同點(diǎn)
對(duì)象和數(shù)組 屬性名稱(chēng)必須是雙引號(hào)括起來(lái)的字符串;最后一個(gè)屬性后不能有逗號(hào)。
數(shù)值 禁止出現(xiàn)前導(dǎo)零( JSON.stringify 方法自動(dòng)忽略前導(dǎo)零,而在 JSON.parse 方法中將會(huì)拋出 SyntaxError);如果有小數(shù)點(diǎn), 則后面至少跟著一位數(shù)字。
字符串 只有有限的一些字符可能會(huì)被轉(zhuǎn)義;禁止某些控制字符; Unicode 行分隔符 (U+2028)和段分隔符 (U+2029)被允許 ; 字符串必須用雙引號(hào)括起來(lái)。請(qǐng)參考下面的示例,可以看到 JSON.parse() 能夠正常解析,但將其當(dāng)作JavaScript解析時(shí)會(huì)拋出 SyntaxError 錯(cuò)誤:
let code = '"\u2028\u2029"';
JSON.parse(code);  // 正常
eval(code);  // 錯(cuò)誤

3.JSON的應(yīng)用場(chǎng)景

  • JSON用于數(shù)據(jù)交換

JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式。 易于人閱讀和編寫(xiě)。同時(shí)也易于機(jī)器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個(gè)子集。 JSON采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類(lèi)似于C語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語(yǔ)言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容