青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見(jiàn)諒!~
隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
數(shù)據(jù)加載中……

JSON剖析:優(yōu)點(diǎn)和不足

摘要

  XML——這種用于表示客戶(hù)端與服務(wù)器間數(shù)據(jù)交換有效負(fù)載的格式,幾乎已經(jīng)成了Web services的同義詞。然而,由于AjaxREST技術(shù)的出現(xiàn)影響了應(yīng)用程序架構(gòu),這迫使人們開(kāi)始尋求`XML的替代品,如:JavaScript Object NotationJSON)。

  JSON 作為一種更輕、更友好的 Web services客戶(hù)端的格式(多采用瀏覽器的形式或訪(fǎng)問(wèn) REST風(fēng)格 Web服務(wù)的Ajax應(yīng)用程序的形式)引起了 Web 服務(wù)供應(yīng)商的注意。

  本文將闡述JSONWeb services設(shè)計(jì)中備受推崇的原因,以及它作為XML替代方案的主要優(yōu)勢(shì)和局限性。文中還會(huì)深入探討:隨著相應(yīng)的Web 服務(wù)客戶(hù)端選擇使用JSON,如何才能便捷地在Java Web services中生成JSON輸出。

XML的十字路口: 瀏覽器和 Ajax

  XML設(shè)計(jì)原理已經(jīng)發(fā)布了將近十年。時(shí)至今日,這種標(biāo)記語(yǔ)言已經(jīng)在廣闊的軟件應(yīng)用領(lǐng)域中占據(jù)了主導(dǎo)地位。從Java.NET等主流平臺(tái)中的配置和部署描述符到應(yīng)用集成場(chǎng)景中更復(fù)雜的應(yīng)用,XML與生俱來(lái)的語(yǔ)言無(wú)關(guān)性使之在軟件架構(gòu)師心目中占據(jù)著獨(dú)特的地位。但即便最著名的XML權(quán)威也不得不承認(rèn):在某些環(huán)境中,XML的使用已經(jīng)超出了它自身能力的極限。

  圍繞Ajax原理構(gòu)建的那些Web應(yīng)用程序最能說(shuō)明XML的生存能力,從這一點(diǎn)來(lái)看,一種新的有效負(fù)載格式的發(fā)展壯大也得益于XML。這種新的有效負(fù)載格式就是JavaScript Object Notation (JSON)。在探索這種新的標(biāo)記語(yǔ)言的復(fù)雜性之前,首先來(lái)分析一下在這種獨(dú)特的設(shè)計(jì)形式中,XML具有哪些局限性。

  Ajax建立了一個(gè)用于從遠(yuǎn)程Web services發(fā)送和接收數(shù)據(jù)的獨(dú)立信道,從而允許Web程序執(zhí)行信道外(out-of-band)客戶(hù)端/服務(wù)器調(diào)用。通俗地說(shuō),Ajax程序中的更新和導(dǎo)航序列在典型的客戶(hù)端/服務(wù)器環(huán)境之外完成,在后臺(tái)(即信道外)接受到信息后,必須進(jìn)行一次完整的屏幕刷新。更多背景信息,請(qǐng)參閱David Teare Ajax簡(jiǎn)介(Dev2Dev)。

  這些應(yīng)用程序更新通常是通過(guò)REST風(fēng)格(RESTfulWeb services獲得的,一旦被用戶(hù)的瀏覽器接收到,就需要整合到HTML頁(yè)面的總體布局之中,這正是XML發(fā)揮強(qiáng)大力量的場(chǎng)合。盡管近年來(lái),腳本語(yǔ)言支持和插件支持已使大多數(shù)主流瀏覽器的功能得到了強(qiáng)化,但許多編程任務(wù)依然難于開(kāi)展,其中之一就是操縱或處理文本,這通常是使用DOM實(shí)現(xiàn)的。

  采用DOM的復(fù)雜性源于其基于函數(shù)的根,這使得對(duì)數(shù)據(jù)樹(shù)的簡(jiǎn)單修改或訪(fǎng)問(wèn)都需要進(jìn)行無(wú)數(shù)次方法調(diào)用。此外,眾所周知,DOM在各種瀏覽器中的實(shí)現(xiàn)細(xì)節(jié)不盡相同,這一過(guò)程將帶來(lái)極為復(fù)雜的編程模式,其跨瀏覽器兼容性出現(xiàn)問(wèn)題的可能性極大。接下來(lái)的問(wèn)題顯而易見(jiàn),那就是:如何使一種標(biāo)記語(yǔ)言輕松集成到HTML頁(yè)面中以滿(mǎn)足Ajax的要求?

  問(wèn)題的答案就是:利用所有主流瀏覽器中的一種通用組件——JavaScript引擎。XML需要使用DOM之類(lèi)的機(jī)制來(lái)訪(fǎng)問(wèn)數(shù)據(jù)并將數(shù)據(jù)整合到布局之中,采用這種方法,我們不再使用像XML這樣的格式來(lái)交付Ajax更新,而是采用一種更為簡(jiǎn)單直觀的方式,采用JavaScript引擎自然匹配的格式——也就是JSON

  既然已經(jīng)明確了JSONXMLAjax之間的關(guān)系,下面將進(jìn)一步探討JSON背后的技術(shù)細(xì)節(jié)。

JSON剖析:優(yōu)點(diǎn)和不足

  對(duì)于JSON,首先要明白JSONXML一樣也是一種簡(jiǎn)單文本格式。相對(duì)于XML,它更加易讀、更便于肉眼檢查。在語(yǔ)法的層面上,JSON與其他格式的區(qū)別是在于分隔數(shù)據(jù)的字符,JSON中的分隔符限于單引號(hào)、小括號(hào)、中括號(hào)、大括號(hào)、冒號(hào)和逗號(hào)。下圖是一個(gè)JSON有效負(fù)載:

{"addressbook": {"name": "Mary Lebow",

    "address": {

        "street": "5 Main Street"

        "city": "San Diego, CA",

        "zip": 91912,

    },

    "phoneNumbers": [

        "619 332-3452",

        "664 223-4667"

    ]

 }

}

  將上面的JSON有效負(fù)載用XML改寫(xiě),如下:

<addressbook>

 <name>Mary Lebow</name>

 <address>

    <street>5 Main Street</street>

    <city zip="91912"> San Diego, CA </city>

    <phoneNumbers>

      <phone>619 332-3452</phone>

      <phone>664 223-4667</phone>

    </phoneNumbers>

 </address>

</addressbook>

  是不是很相似?但它們并不相同。下面將詳細(xì)闡述采用JSON句法的優(yōu)點(diǎn)和不足。

優(yōu)點(diǎn)

  乍看上去,使用JSON的數(shù)據(jù)分隔符的優(yōu)點(diǎn)可能并不那么明顯,但存在一個(gè)根本性的緣由:它們簡(jiǎn)化了數(shù)據(jù)訪(fǎng)問(wèn)。使用這些數(shù)據(jù)分隔符時(shí), JavaScript引擎對(duì)數(shù)據(jù)結(jié)構(gòu)(如字符串、數(shù)組、對(duì)象)的內(nèi)部表示恰好與這些符號(hào)相同。

  這將開(kāi)創(chuàng)一條比DOM技術(shù)更為便捷的數(shù)據(jù)訪(fǎng)問(wèn)途徑。下面列舉幾個(gè)JavaScript代碼片段來(lái)說(shuō)明這一過(guò)程,這些代碼片段會(huì)訪(fǎng)問(wèn)先前的JSON代碼片段中的信息:

   訪(fǎng)問(wèn)JSON中的名稱(chēng): addressbook.name

   訪(fǎng)問(wèn)JSON中的地址: addressbook.address.street

   訪(fǎng)問(wèn)JSON中的電話(huà)號(hào)碼第一位:addressbook.address.phoneNumbers[0]

  如果您具備DOM編程經(jīng)驗(yàn),就能很快地看出區(qū)別;新手可以參看 Document Object Model 的這一外部資源,這里提供了關(guān)于數(shù)據(jù)導(dǎo)航的實(shí)例。

  JSON的另一個(gè)優(yōu)點(diǎn)是它的非冗長(zhǎng)性。在XML中,打開(kāi)和關(guān)閉標(biāo)記是必需的,這樣才能滿(mǎn)足標(biāo)記的依從性;而在JSON中,所有這些要求只需通過(guò)一個(gè)簡(jiǎn)單的括號(hào)即可滿(mǎn)足。在包含有數(shù)以百計(jì)字段的數(shù)據(jù)交換中,傳統(tǒng)的XML標(biāo)記將會(huì)延長(zhǎng)數(shù)據(jù)交換時(shí)間。目前還沒(méi)有正式的研究表明JSONXML有更高的線(xiàn)上傳輸效率;人們只是通過(guò)簡(jiǎn)單的字節(jié)數(shù)比較發(fā)現(xiàn),對(duì)于等效的JSONXML有效負(fù)載,前者總是小于后者。至于它們之間的差距有多大,特別是在新的XML壓縮格式下它們的差距有多大,有待進(jìn)一步的研究。

  此外,JSON受到了擅長(zhǎng)不同編程語(yǔ)言的開(kāi)發(fā)人員的青睞。這是因?yàn)闊o(wú)論在Haskell中或 Lisp中,還是在更為主流的C#PHP中,開(kāi)發(fā)都可以方便地生成JSON(詳見(jiàn) 參考資料)。

不足

  和許多好東西都具有兩面性一樣,JSON的非冗長(zhǎng)性也不例外,為此JSON丟失了XML具有的一些特性。命名空間允許不同上下文中的相同的信息段彼此混合,然而,顯然在JSON中已經(jīng)找不到了命名空間。JSONXML的另一個(gè)差別是屬性的差異,由于JSON采用冒號(hào)賦值,這將導(dǎo)致當(dāng)XML轉(zhuǎn)化為JSON時(shí),在標(biāo)識(shí)符(XML CDATA)與實(shí)際屬性值之間很難區(qū)分誰(shuí)應(yīng)該被當(dāng)作文本考慮。

  另外,JSON片段的創(chuàng)建和驗(yàn)證過(guò)程比一般的XML稍顯復(fù)雜。從這一點(diǎn)來(lái)看,XML在開(kāi)發(fā)工具方面領(lǐng)先于JSON。盡管如此,為了消除您對(duì)這一領(lǐng)域可能存在的困惑,下節(jié)將介紹一些最為成熟的JSON開(kāi)發(fā)

 

posted on 2009-07-28 11:48 肥仔 閱讀(1160) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): Web-前臺(tái)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区三区蜜桃网| 久久天天躁夜夜躁狠狠躁2022 | 国产一区二区精品久久| 欧美国产日韩一区| 久久精品国产清自在天天线| 一区二区国产精品| 亚洲人成网站777色婷婷| 久久久久久夜精品精品免费| 亚洲综合日韩中文字幕v在线| 亚洲欧洲一区二区在线播放| 国产一区清纯| 国产欧美在线播放| 国产精品久久午夜夜伦鲁鲁| 欧美日韩国产va另类| 欧美在线免费视屏| 亚洲免费视频一区二区| 夜色激情一区二区| 亚洲欧洲三级| 亚洲精品日韩久久| 亚洲欧洲一区二区三区在线观看| 极品尤物一区二区三区| 国内精品久久久久久久97牛牛| 国产精品视频第一区| 欧美日韩亚洲一区在线观看| 欧美精品97| 欧美男人的天堂| 欧美激情一区二区| 欧美精品少妇一区二区三区| 欧美黄色一级视频| 欧美日韩成人在线| 欧美日韩一区高清| 欧美日韩亚洲天堂| 国产精品乱码一区二区三区| 国产精品久久久久久亚洲毛片| 欧美性大战久久久久久久蜜臀 | 亚洲高清在线播放| 在线日韩视频| 最新精品在线| 日韩亚洲欧美精品| 亚洲一级一区| 欧美一级电影久久| 久久av一区二区三区| 久久久av毛片精品| 欧美成在线观看| 91久久精品一区二区别| 一区电影在线观看| 羞羞色国产精品| 久久尤物电影视频在线观看| 欧美肥婆在线| 国产精品婷婷| 伊人色综合久久天天| 亚洲破处大片| 亚洲综合社区| 久久综合伊人77777尤物| 欧美成人一品| 日韩午夜在线| 午夜视频一区二区| 久久一区二区精品| 欧美日韩国产影院| 国产欧美日韩视频| 亚洲国产专区校园欧美| 中国成人黄色视屏| 久久精品视频99| 亚洲国产老妈| 韩国成人福利片在线播放| 一区二区三区高清在线观看| 欧美日韩视频免费播放| 欧美色欧美亚洲另类七区| 欧美性一区二区| 国产亚洲精品资源在线26u| 亚洲国产成人91精品| 一区二区三区视频在线观看| 欧美一区二区在线免费播放| 免费黄网站欧美| 日韩一级大片在线| 欧美专区日韩专区| 欧美精品三区| 狠狠综合久久av一区二区小说 | 性娇小13――14欧美| 久久久五月婷婷| 欧美私人啪啪vps| 在线观看欧美精品| 亚洲一区二区三区中文字幕| 久久全国免费视频| 999亚洲国产精| 久久久久久欧美| 国产精品国产成人国产三级| 亚洲二区免费| 久久不射中文字幕| 亚洲精品久久久久久下一站 | 亚洲激情综合| 欧美一级淫片aaaaaaa视频| 欧美黄色日本| 欧美一区二区三区在线观看| 欧美日韩国产美女| 亚洲大片一区二区三区| 午夜亚洲激情| 亚洲美女精品一区| 久久亚洲综合色一区二区三区| 国产精品户外野外| 亚洲乱码久久| 欧美v亚洲v综合ⅴ国产v| 亚洲欧美日韩综合aⅴ视频| 欧美日韩国产黄| 亚洲精品国产精品乱码不99按摩| 久久久久久免费| 亚洲综合视频一区| 欧美视频在线观看免费网址| 亚洲激情在线| 免费观看一级特黄欧美大片| 性做久久久久久久久| 国产精品毛片va一区二区三区 | 夜夜爽www精品| 欧美高清在线视频| 久久精品亚洲热| 国产亚洲精久久久久久| 午夜日韩av| 亚洲香蕉成视频在线观看| 欧美日韩影院| 亚洲手机视频| 一区二区三区精密机械公司| 欧美日韩123| 一本色道久久加勒比88综合| 亚洲国产99精品国自产| 老牛国产精品一区的观看方式| 黄色成人在线| 裸体一区二区三区| 久久美女性网| 在线精品亚洲| 欧美国产日本韩| 欧美mv日韩mv国产网站| 91久久久一线二线三线品牌| 欧美二区在线看| 欧美暴力喷水在线| 亚洲精品视频中文字幕| 91久久精品美女| 欧美日韩一区二区三区四区在线观看 | 亚洲高清电影| 国产亚洲激情| 亚洲日本va午夜在线影院| 美女国产一区| 开元免费观看欧美电视剧网站| 在线日韩日本国产亚洲| 欧美国产乱视频| 欧美韩日亚洲| 亚洲视频在线播放| 亚洲午夜av在线| 国产欧美日韩一区| 久久嫩草精品久久久精品| 久久夜色精品国产欧美乱| 亚洲激情在线观看视频免费| 最新日韩欧美| 国产精品美女www爽爽爽| 欧美在线观看网站| 久久久久综合一区二区三区| 亚洲欧洲日夜超级视频| 亚洲精品视频在线播放| 国产精品v片在线观看不卡| 欧美综合国产| 久久最新视频| 中文日韩电影网站| 欧美一区二区网站| 最新亚洲一区| 中文亚洲免费| 一区二区三区在线观看国产| 亚洲高清三级视频| 国产精品国产自产拍高清av王其 | 亚洲韩国日本中文字幕| 亚洲人成网站999久久久综合| 欧美亚州在线观看| 久久免费视频这里只有精品| 欧美成人在线免费视频| 亚洲主播在线播放| 久久精品青青大伊人av| 亚洲日本中文字幕区| 亚洲一区成人| 91久久精品国产91性色tv| 在线视频亚洲| 亚洲福利国产精品| 亚洲视频香蕉人妖| 亚洲福利在线视频| 亚洲性夜色噜噜噜7777| 亚洲福利视频网| 亚洲一区二区三区在线播放| 一区二区亚洲精品| 在线一区二区视频| 亚洲国产精品一区在线观看不卡| 一区二区电影免费观看| 尤物九九久久国产精品的分类| 亚洲伦理在线免费看| 国产在线视频不卡二| 亚洲伦理网站| 亚洲国产成人久久综合一区| 亚洲主播在线播放| 99这里有精品| 久久琪琪电影院| 欧美一区二区三区四区在线观看地址 | 香蕉成人伊视频在线观看| 久久夜色精品亚洲噜噜国产mv| 亚洲男女毛片无遮挡|