abstract:在傳統(tǒng)的Web開發(fā)過程中,前端工程師或者后臺(tái)工程師會(huì)在頁(yè)面上寫后臺(tái)的相關(guān)代碼,比如在ASP.NET MVC4里面寫如下代碼:@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })這樣的代碼有優(yōu)點(diǎn),當(dāng)然也有缺點(diǎn)。缺點(diǎn)就是前后端分離的不徹底,前端工程師需要了解一些后臺(tái)的代碼,而已在不能把前端和后臺(tái)都
在傳統(tǒng)的Web開發(fā)過程中,前端工程師或者后臺(tái)工程師會(huì)在頁(yè)面上寫后臺(tái)的相關(guān)代碼,比如在ASP.NET MVC4里面寫如下代碼:
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control" })
這樣的代碼有優(yōu)點(diǎn),當(dāng)然也有缺點(diǎn)。缺點(diǎn)就是前后端分離的不徹底,前端工程師需要了解一些后臺(tái)的代碼,而已在不能把前端和后臺(tái)都分開開發(fā)和部署。采用JSON就可以解決這一問題。就是前端和后臺(tái)交換數(shù)據(jù)的格式都采用JSON。JSON:JavaScript Object Notation的縮寫,是一種基于JavaScript的字面量表達(dá)式的數(shù)據(jù)格式類型。在ECMAScript第5版標(biāo)準(zhǔn)中也包含了JSON這一類型。
JSON能夠通過4種基本數(shù)據(jù)類型以及2種數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)類型來表示。4種基本數(shù)據(jù)類型是:字符串值型,數(shù)值型,布爾型和null型。結(jié)構(gòu)化數(shù)據(jù)類型是對(duì)象和數(shù)組這兩種。舉例如下:
開發(fā)過程中,很多操作都包含了JSON格式數(shù)據(jù)類型的字符串與JavaScript對(duì)象間的相互轉(zhuǎn)換。在Ajax提交表單時(shí),需要將內(nèi)部的對(duì)象轉(zhuǎn)換JSON字符串之后再傳輸。而在接收J(rèn)SON數(shù)據(jù)端,需要先將JSON字符串轉(zhuǎn)換為JavaScript對(duì)象之后,才能不借助第三方類庫(kù)對(duì)其值進(jìn)行操作。在瀏覽器不支持JSON.stringify()和JSON.parse()方法之前,開發(fā)者都會(huì)使用json2.js在前端處理JSON字符串和JSON對(duì)象之間的轉(zhuǎn)換。下面舉例說明,將JSON字符串轉(zhuǎn)換對(duì)象,將對(duì)象轉(zhuǎn)換為JSON字符串。
//將JSON字符串轉(zhuǎn)換對(duì)象 var s='{"x":1,"y":2,"val":"foobar"}'; var obj=JSON.parse(s); //將對(duì)象轉(zhuǎn)換JSON字符串 var test=JSON.stringify({x:1,y:2,val:'foobar'}); console.log(test); 在實(shí)際開發(fā)過程中,經(jīng)常使用JSON數(shù)組,和包含數(shù)組的JSON,如下代碼所示: var result=JSON.parse('[{"name":"aaa","age":"20","gender":"female"},{"name":"bbb","age":"21","gender":"male"},{"name":"ccc","age":"22","gender":"male"}]'); for(var index in result){ document.write(result[index].name); } var result1=JSON.parse('{"counts":5,"items":["aaa","bbb","ccc","ddd"]}');//包含數(shù)組的JSON字符串 console.log(result1.counts); for(var index in result1.items){ console.log(result1.items[index]); }
以上僅討論客戶端,也就是瀏覽器里面如何JSON,在后臺(tái)開發(fā)過程中,也需要解析JSON,或者把C#,PHP或者Java的數(shù)據(jù)內(nèi)容生成JSON。下一篇博客主要介紹這個(gè)內(nèi)容。