大家好,我是IT修真院北京總院第21期的學(xué)員楊夢(mèng)桐,
今天這篇文主要關(guān)于json是什么,以及如何處理轉(zhuǎn)義。
數(shù)據(jù)傳輸是我們?cè)诰帉懘a時(shí)經(jīng)常遇到的一個(gè)場(chǎng)景。給數(shù)據(jù)一個(gè)統(tǒng)一的格式有利于我們編寫和解析數(shù)據(jù)。json,是數(shù)據(jù)格式的一種,在與后端的數(shù)據(jù)交換中有較為廣泛的應(yīng)用。
json是一種數(shù)據(jù)格式,全名JavaScript Object Notation (JavaScript 對(duì)象表示法),具有基于文本、輕量級(jí)、被廣泛地用于數(shù)據(jù)交換的特點(diǎn),也是一種傳遞對(duì)象的語(yǔ)法,對(duì)象可以是name/value對(duì),數(shù)組和其他對(duì)象,具體展開,包含如下概念:
1. 基于文本:JSON是基于文本的數(shù)據(jù)格式,相對(duì)于基于二進(jìn)制的數(shù)據(jù),所以JSON在傳遞的時(shí)候是傳遞符合JSON這種格式的字符串,而不是一個(gè)對(duì)象。
2. 輕量級(jí):在JSON之前,有一個(gè)數(shù)據(jù)格式叫xml,現(xiàn)在依舊廣泛使用,但是JSON更加輕量,這在有大量數(shù)據(jù)請(qǐng)求和傳遞的情況下是有明顯優(yōu)勢(shì)的。
3. 應(yīng)用廣泛:輕量已經(jīng)是一個(gè)用于數(shù)據(jù)交換的優(yōu)勢(shì)了,但更重要的JSON是易于閱讀、編寫和機(jī)器解析的,即這個(gè)JSON對(duì)人和機(jī)器都是友好的,而且又輕,獨(dú)立于語(yǔ)言(因?yàn)槭腔谖谋镜模訨SON被廣泛用于數(shù)據(jù)交換。
json的常見問題如下
1.什么是JSON對(duì)象?
a.符合json格式的js對(duì)象被簡(jiǎn)稱為json對(duì)象
b.JSON是一個(gè)提供了stringify和parse方法的內(nèi)置對(duì)象
c.JSON.stringify()將js對(duì)象轉(zhuǎn)化為符合json標(biāo)準(zhǔn)的字符串
d.JSON.parse()將符合json標(biāo)準(zhǔn)的字符串轉(zhuǎn)化為js對(duì)象
2.?json格式的對(duì)象與一般js對(duì)象語(yǔ)法上的區(qū)別
a.json格式的對(duì)象鍵名必須是加雙引號(hào),屬性值只能是數(shù)值(10進(jìn)制)、字符串(雙引號(hào))、布爾值和null,也可以是數(shù)組或者符合JSON要求的對(duì)象,不能是函數(shù)、NaN, Infinity(存放表示正無(wú)窮大的數(shù)值), -Infinity和undefined,最后一個(gè)屬性后面不能有逗號(hào),前導(dǎo)0不能用,小數(shù)點(diǎn)后必須有數(shù)字
b.js對(duì)象鍵名可允許不加、加單引號(hào)、加雙引號(hào),任意屬性值均可,最后一個(gè)屬性后面可以有逗號(hào),數(shù)值無(wú)限制
3.?什么是json格式?
數(shù)據(jù)以鍵值對(duì)的形式存儲(chǔ),和對(duì)象的格式有點(diǎn)像
ar person={name:"blabla"};
//一個(gè)普通的js對(duì)象
var obj2 = {"width":100,"height":200,"name":"blabla"};
// 可把這個(gè)稱做:JSON 格式的 JavaScript 對(duì)象
var str1 = '{"width":100,"height":200,"name":"blabla"}';
// 可把這個(gè)稱做:JSON 格式的字符串
var arr = [
{"width":100,"height":200,"name":"blabla"},
{"width":100,"height":200,"name":"blabla"},
{"width":100,"height":200,"name":"blabla"},
];
// 這個(gè)可叫JSON格式的數(shù)組,是JSON的稍復(fù)雜一點(diǎn)的形式
var str2='['+
'{"width":100,"height":200,"name":"blabla"},'+
'{"width":100,"height":200,"name":"blabla"},'+
'{"width":100,"height":200,"name":"blabla"},'+
']';
// 這個(gè)可叫稍復(fù)雜一點(diǎn)的 JSON 格式的字符串
擴(kuò)展思考:由json字串生成json對(duì)象時(shí)的轉(zhuǎn)義問題:http://blog.csdn.net/robotech_er/article/details/40260377
參考文獻(xiàn):http://www.jb51.net/article/29893.htm
json和xml作為數(shù)據(jù)傳輸?shù)母袷椒謩e有什么優(yōu)缺點(diǎn):http://blog.csdn.net/tangtiantian520/article/details/50945582
ppt鏈接:https://ptteng.github.io/PPT/PPT/js8router.html#/
視頻鏈接:https://v.qq.com/x/page/s0527lcnvtf.html
拓展問題:
1. json和jsonp的區(qū)別
json返回的是一串?dāng)?shù)據(jù);而jsonp返回的是腳本代碼(包含一個(gè)函數(shù)調(diào)用),具體可參考http://www.cnblogs.com/iovec/p/5312464.html這篇文章
2. xml是什么
擴(kuò)展標(biāo)記語(yǔ)言 (Extensible Markup Language, XML) ,用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言,可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言。 XML使用DTD(document type definition)文檔類型定義來(lái)組織數(shù)據(jù);格式統(tǒng)一,跨平臺(tái)和語(yǔ)言,早已成為業(yè)界公認(rèn)的標(biāo)準(zhǔn)。XML是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立于應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。具體可參考https://baike.baidu.com/item/可擴(kuò)展標(biāo)記語(yǔ)言/2885849?fr=aladdin&fromid=86251&fromtitle=xml
3. xml和json的區(qū)別
相較json,XML文件龐大,文件格式復(fù)雜,傳輸占帶寬;服務(wù)器端和客戶端都需要花費(fèi)大量代碼來(lái)解析XML,導(dǎo)致服務(wù)器端和客戶端代碼變得異常復(fù)雜且不易維護(hù);客戶端不同瀏覽器之間解析XML的方式不一致,需要重復(fù)編寫很多代碼;服務(wù)器端和客戶端解析XML花費(fèi)較多的資源和時(shí)間??蓞⒖糷ttp://www.cnblogs.com/SanMaoSpace/p/3139186.html