免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
JavaScript之JSON詳解

向服務(wù)器發(fā)出Ajax請(qǐng)求時(shí),可以以兩種不同的方式從服務(wù)器響應(yīng)檢索數(shù)據(jù):一種是使用XMLHttpRequest對(duì)象的reponseXML屬性訪問(wèn)XML格式的數(shù)據(jù);一種是XMLHttpRequest對(duì)象的responseText屬性訪問(wèn)字符串格式的數(shù)據(jù)。當(dāng)前,XML是進(jìn)行數(shù)據(jù)傳輸?shù)臉?biāo)準(zhǔn)語(yǔ)言,但是使用XML的缺點(diǎn)之一是很難對(duì)它進(jìn)行解析并提取要添加到頁(yè)面的數(shù)據(jù)。


      JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式,我們稱之為JavaScript對(duì)象表示法。使用JSON進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì)之一是JSON實(shí)際上就是JavaScript。它基于ECMAScript第3版中JavaScript對(duì)象字面量語(yǔ)法子集的一種文本格式。這表示可以使用responseText從服務(wù)器中檢索JSON數(shù)據(jù),然后再使用JavaScript的eval()方法將JSON字符串轉(zhuǎn)換成JavaScript對(duì)象,那么,使用附加JavaScript就可以很地從該對(duì)象中提取數(shù)據(jù),而不需要處理DOM。


      另外,也有針對(duì)大部分編程語(yǔ)言(包括C++,C#,ColdFusion、Java、Perl、PHP和Python)的JSON庫(kù),這些庫(kù)能將上述語(yǔ)言格式化數(shù)據(jù)轉(zhuǎn)換成JSON格式。


      盡管有許多宣傳關(guān)于XML如何擁有跨平臺(tái),跨語(yǔ)言的優(yōu)勢(shì),然而,除非應(yīng)用于Web Services,否則,在普通的Web應(yīng)用中,開(kāi)發(fā)都經(jīng)常為XML的解析作秀了腦筋,無(wú)論是服務(wù)器端生成或處理XML,還是客戶端用JavaScript解析XML,都常常導(dǎo)致復(fù)雜的代碼,極低的開(kāi)發(fā)效率。實(shí)際上,對(duì)于大多數(shù)Web應(yīng)用來(lái)說(shuō),根本不需要要復(fù)雜的XML來(lái)傳輸數(shù)據(jù),XML的擴(kuò)展性很少具有優(yōu)勢(shì),許多Ajax應(yīng)用甚至直接返回HTML片段來(lái)構(gòu)建動(dòng)態(tài)Web頁(yè)面。和返回XML并解析它相比,返回HTML片段大大降低了系統(tǒng)的復(fù)雜性,但同時(shí)缺少了一定的靈活性。XML使用元素、屬性、實(shí)體和其他結(jié)構(gòu)。JSON不是文檔格式,因此它不需要這些附加結(jié)構(gòu)。因?yàn)镴SON數(shù)據(jù)只包括“名-值”對(duì)(對(duì)象)或值(數(shù)組),所以JSON數(shù)據(jù)比同等的XML數(shù)據(jù)占用更少的空間,執(zhí)行速度更快。


      (一)JSON語(yǔ)法
      JSON建構(gòu)于兩種結(jié)構(gòu):
      對(duì)象——名稱/值對(duì)的集合。不同的語(yǔ)言中,它被理解為對(duì)象,紀(jì)錄,結(jié)構(gòu),字典,哈希表,有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組。一個(gè)對(duì)象以“{”(左括號(hào))開(kāi)始,“}”(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)“:”(冒號(hào));“‘名稱/值’ 對(duì)”之間使用“,”(逗號(hào))分隔。
      數(shù)組——值的有序列表。在大部分語(yǔ)言中,它被理解為數(shù)組。一個(gè)數(shù)組以“[”(左中括號(hào))開(kāi)始,“]”(右中括號(hào))結(jié)束。值之間使用“,”(逗號(hào))分隔。


      JSON沒(méi)有變量或其他控制結(jié)構(gòu)。JSON只用于數(shù)據(jù)傳輸。
      JSON語(yǔ)法是基于對(duì)面字面量和數(shù)組字面量的JavaScript語(yǔ)法。當(dāng)使用字面量時(shí),將包括數(shù)據(jù)本身,但不包括生成數(shù)據(jù)的表達(dá)式。


      1、 數(shù)據(jù)類型
      JSON數(shù)據(jù)結(jié)構(gòu)包含以下數(shù)據(jù)類型:字符、數(shù)字、布爾值(true/false)、null、對(duì)象,數(shù)組。
      JSON字符串必須使用雙引號(hào)括起來(lái)。它們使用標(biāo)準(zhǔn)的JavaScript轉(zhuǎn)義序列。因此在以下列字符的前面要添加一個(gè)反斜線:
      JSON具有以下這些形式:”(引號(hào))、b(空格)、n(新行)、f(換頁(yè))、r(回車)、t(水平定位)、u(為Unicode字符增加4個(gè)數(shù)位)、\(反斜線符號(hào))、/(正斜杠符號(hào))。


      2、對(duì)象字面量
      JSON使用字面量來(lái)表示對(duì)象,如果有一個(gè)以上的成員對(duì)象,則在JSON中,可以將其表示為一個(gè)包含擁有兩個(gè)對(duì)象的數(shù)組的對(duì)象。下列代碼顯示JOSN文本形式的member對(duì)象:

        {“memeber”:[

            {
                  “name”:”Tom”,
                  “age”:22,
                  “country”:”USA”
      },
      {
                  “name”:”WangMing”,
                  “age”:25,
                  “country”:”China”
      }

      }


     3、使用JSON解析器
      可以使用JSON解析器從對(duì)象和數(shù)組中創(chuàng)建JSON文本或者JSON文本中創(chuàng)建對(duì)象和數(shù)組。JSON站占www.json.rog/json.js上提供有JSON解析器,通過(guò)將下列代碼加入到頁(yè)面的頭部上即可使用。JSON解析器提供了兩個(gè)函數(shù):toJSONString()和parseJSON()。
      toJSONString()方法被添加到JavaScript Object和Array定義中,該方法能將JavaScript對(duì)象或數(shù)組轉(zhuǎn)換成JSON文本。不必將對(duì)象或數(shù)組轉(zhuǎn)換成字面量就能使用該方法。
      parseJSON()方法能從JSON文本中創(chuàng)建對(duì)象或數(shù)組。


      (二)使用XMLHttpRequest對(duì)象創(chuàng)建JSON數(shù)據(jù)請(qǐng)求
      1、創(chuàng)建請(qǐng)求
      如果直接請(qǐng)求服務(wù)器上一個(gè)JSON文件中的JSON數(shù)據(jù),則可以利用文件名來(lái)請(qǐng)求JSON文件。
      respone.open(“GET”,”classes.txt”,true);
      在這種情況下,classes.txt是JSON數(shù)據(jù)文件的名稱,request是創(chuàng)建用來(lái)存放XMLHttpRequest對(duì)象的變量。
      2、解析響應(yīng)
      一旦接受服務(wù)器的JSON數(shù)據(jù),就可以采用兩種不同的方式解析該響應(yīng)??梢允褂肑avaScript的內(nèi)置函數(shù)eval(),或者為了進(jìn)一步的安全,使用JSON解析器代替。
      eval()方法可以把JavaScript字符串當(dāng)作參數(shù),還可以將該字符串轉(zhuǎn)換成對(duì)象,或作為命令動(dòng)作。如果使用XMLHttpRequest對(duì)象的responseText屬性請(qǐng)求JSON數(shù)據(jù),那么使用eval()將JSON文本字符串轉(zhuǎn)換成JavaScript對(duì)象。因?yàn)镴SON字符串常包包含花括號(hào),所以用圓括號(hào)來(lái)括住JSON字符串,以表明字它是一個(gè)求值表達(dá)式,而不是一個(gè)要運(yùn)行的命令。
      var jsonResp=request.responseText;
      jsonResp=eval(“(”+jsonResp+”)”);
      如果Web服務(wù)器既提供JSON數(shù)據(jù)也提供請(qǐng)求頁(yè)面,則適合選用eval()方法。如果涉及安全,則適合使用JSON解析器。JSON解析器只作用于JSON文本,并且不執(zhí)行其他JavaScript。在這種情況下,可以使用responseText,但要使用parseJSON()方法將JSON文本字符串轉(zhuǎn)換成JavaScript對(duì)象。要訪問(wèn)parseJOSN函數(shù),需要要添加引用json.js文件到頁(yè)面中。
      var jsonResp=request.responseText;
      jsonResp=jsonResp.parseJSON();
      下面以實(shí)例來(lái)說(shuō)明在JavaScript中簡(jiǎn)單使用JSON:
      <script type="text/javascript">
      var user =[
      {
            "name":”shenmiweiyi”,
            "QQ":306451129,
            "email":”shenmiweiyi@163.com
            "address":
            [
                  {"City":"ZhengZhou","ZipCode":"450000"},
                  {"City":"BeiJing","ZipCode":"100000"}
            ]
      },
      {
            "name":”kehao”,
            "QQ":254892313,
            "email":”kehao@163.com
            "address":
            [
                  {"City":"ShangHai","ZipCode":"200000"},
                  {"City":"GuangZhou","ZipCode":"510000"}
            ]
       }
      ]
      alert(user[0].name+”的Email是:”user[0].email);  //outputs shenmiweiyi的Email是:shenmiweiyi@163.com
       alert(user[1].name+”住在:”user[1].address[0].city) //outputs kehao住在:ShangHai
</script>
      JSON已經(jīng)是JavaScript標(biāo)準(zhǔn)的一部分。目前,主流的瀏覽器對(duì)JSON支持都非常完美,應(yīng)用JSON,我們可以從XML的解析中擺脫出來(lái),對(duì)那些應(yīng)用Ajax的Web2.0網(wǎng)站來(lái)說(shuō),JSON確實(shí)是目前最靈活的輕量級(jí)方案。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JSON數(shù)據(jù)格式
json-rpc-java (一)
json數(shù)據(jù)在前端(javascript)和后端(php)轉(zhuǎn)換
json數(shù)組對(duì)象和對(duì)象數(shù)組
掌握 Ajax,第 10 部分: 使用 JSON 進(jìn)行數(shù)據(jù)傳輸
JSON
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服