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

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

JSON剖析:優點和不足

摘要

  XML——這種用于表示客戶端與服務器間數據交換有效負載的格式,幾乎已經成了Web services的同義詞。然而,由于AjaxREST技術的出現影響了應用程序架構,這迫使人們開始尋求`XML的替代品,如:JavaScript Object NotationJSON)。

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

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

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

  XML設計原理已經發布了將近十年。時至今日,這種標記語言已經在廣闊的軟件應用領域中占據了主導地位。從Java.NET等主流平臺中的配置和部署描述符到應用集成場景中更復雜的應用,XML與生俱來的語言無關性使之在軟件架構師心目中占據著獨特的地位。但即便最著名的XML權威也不得不承認:在某些環境中,XML的使用已經超出了它自身能力的極限。

  圍繞Ajax原理構建的那些Web應用程序最能說明XML的生存能力,從這一點來看,一種新的有效負載格式的發展壯大也得益于XML。這種新的有效負載格式就是JavaScript Object Notation (JSON)。在探索這種新的標記語言的復雜性之前,首先來分析一下在這種獨特的設計形式中,XML具有哪些局限性。

  Ajax建立了一個用于從遠程Web services發送和接收數據的獨立信道,從而允許Web程序執行信道外(out-of-band)客戶端/服務器調用。通俗地說,Ajax程序中的更新和導航序列在典型的客戶端/服務器環境之外完成,在后臺(即信道外)接受到信息后,必須進行一次完整的屏幕刷新。更多背景信息,請參閱David Teare Ajax簡介(Dev2Dev)。

  這些應用程序更新通常是通過REST風格(RESTfulWeb services獲得的,一旦被用戶的瀏覽器接收到,就需要整合到HTML頁面的總體布局之中,這正是XML發揮強大力量的場合。盡管近年來,腳本語言支持和插件支持已使大多數主流瀏覽器的功能得到了強化,但許多編程任務依然難于開展,其中之一就是操縱或處理文本,這通常是使用DOM實現的。

  采用DOM的復雜性源于其基于函數的根,這使得對數據樹的簡單修改或訪問都需要進行無數次方法調用。此外,眾所周知,DOM在各種瀏覽器中的實現細節不盡相同,這一過程將帶來極為復雜的編程模式,其跨瀏覽器兼容性出現問題的可能性極大。接下來的問題顯而易見,那就是:如何使一種標記語言輕松集成到HTML頁面中以滿足Ajax的要求?

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

  既然已經明確了JSONXMLAjax之間的關系,下面將進一步探討JSON背后的技術細節。

JSON剖析:優點和不足

  對于JSON,首先要明白JSONXML一樣也是一種簡單文本格式。相對于XML,它更加易讀、更便于肉眼檢查。在語法的層面上,JSON與其他格式的區別是在于分隔數據的字符,JSON中的分隔符限于單引號、小括號、中括號、大括號、冒號和逗號。下圖是一個JSON有效負載:

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

    "address": {

        "street": "5 Main Street"

        "city": "San Diego, CA",

        "zip": 91912,

    },

    "phoneNumbers": [

        "619 332-3452",

        "664 223-4667"

    ]

 }

}

  將上面的JSON有效負載用XML改寫,如下:

<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>

  是不是很相似?但它們并不相同。下面將詳細闡述采用JSON句法的優點和不足。

優點

  乍看上去,使用JSON的數據分隔符的優點可能并不那么明顯,但存在一個根本性的緣由:它們簡化了數據訪問。使用這些數據分隔符時, JavaScript引擎對數據結構(如字符串、數組、對象)的內部表示恰好與這些符號相同。

  這將開創一條比DOM技術更為便捷的數據訪問途徑。下面列舉幾個JavaScript代碼片段來說明這一過程,這些代碼片段會訪問先前的JSON代碼片段中的信息:

   訪問JSON中的名稱: addressbook.name

   訪問JSON中的地址: addressbook.address.street

   訪問JSON中的電話號碼第一位:addressbook.address.phoneNumbers[0]

  如果您具備DOM編程經驗,就能很快地看出區別;新手可以參看 Document Object Model 的這一外部資源,這里提供了關于數據導航的實例。

  JSON的另一個優點是它的非冗長性。在XML中,打開和關閉標記是必需的,這樣才能滿足標記的依從性;而在JSON中,所有這些要求只需通過一個簡單的括號即可滿足。在包含有數以百計字段的數據交換中,傳統的XML標記將會延長數據交換時間。目前還沒有正式的研究表明JSONXML有更高的線上傳輸效率;人們只是通過簡單的字節數比較發現,對于等效的JSONXML有效負載,前者總是小于后者。至于它們之間的差距有多大,特別是在新的XML壓縮格式下它們的差距有多大,有待進一步的研究。

  此外,JSON受到了擅長不同編程語言的開發人員的青睞。這是因為無論在Haskell中或 Lisp中,還是在更為主流的C#PHP中,開發都可以方便地生成JSON(詳見 參考資料)。

不足

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

  另外,JSON片段的創建和驗證過程比一般的XML稍顯復雜。從這一點來看,XML在開發工具方面領先于JSON。盡管如此,為了消除您對這一領域可能存在的困惑,下節將介紹一些最為成熟的JSON開發

 

posted on 2009-07-28 11:48 肥仔 閱讀(1153) 評論(0)  編輯 收藏 引用 所屬分類: Web-前臺

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产美女一区二区| 欧美一级成年大片在线观看| 亚洲伦理网站| 亚洲欧洲日韩在线| 久久女同精品一区二区| 小处雏高清一区二区三区| 亚洲伦理中文字幕| 亚洲精品欧美精品| 在线视频欧美精品| 午夜免费久久久久| 久久综合一区二区| 亚洲精品在线二区| 午夜激情综合网| 麻豆精品网站| 欧美视频在线观看一区二区| 国产精品中文字幕在线观看| 亚洲电影免费观看高清完整版在线观看 | 亚洲精品中文字幕女同| 在线亚洲一区观看| 欧美一区二区在线免费观看| 欧美成人一区二区在线| 一区二区三区免费看| 久久久久久高潮国产精品视| 亚洲欧洲日本国产| 欧美黄色影院| 国产欧美视频一区二区三区| 亚洲人午夜精品免费| 午夜精品久久久久久久99热浪潮| 免费视频久久| 亚洲综合色噜噜狠狠| 欧美黑人在线播放| 国产综合欧美| 亚洲欧美日韩国产综合| 欧美激情视频一区二区三区不卡| 亚洲国产精品成人一区二区| 老巨人导航500精品| 一区二区三区我不卡| 欧美视频日韩视频在线观看| 精品二区视频| 久久久久**毛片大全| av成人免费在线观看| 欧美成年网站| 亚洲电影视频在线| 久久久久久亚洲精品中文字幕| 一区二区三区**美女毛片| 欧美3dxxxxhd| 亚洲国产精品成人精品| 美女91精品| 久久国产主播精品| 亚洲精品久久久久久久久久久久久 | 激情小说另类小说亚洲欧美 | 欧美sm视频| 国产一区二区三区黄| 亚洲欧美国产另类| 亚洲毛片视频| 亚洲欧美欧美一区二区三区| 欧美日韩免费一区二区三区视频| 亚洲片在线资源| 欧美国内亚洲| 蜜臀久久99精品久久久画质超高清 | 欧美人体xx| 亚洲另类一区二区| 亚洲国产精品一区二区久| 久久久久久一区二区| 在线观看不卡av| 欧美国产91| 欧美福利一区| 亚洲少妇在线| 亚洲一区区二区| 国产专区欧美专区| 蜜桃精品一区二区三区| 久久资源av| 99热精品在线观看| 一本色道久久综合亚洲精品小说 | 欧美日韩一区自拍| 亚洲欧美日韩精品久久| 亚洲欧美日韩国产精品| 国产午夜精品久久久| 裸体一区二区三区| 欧美大片一区| 亚洲免费在线精品一区| 午夜日韩在线观看| 伊人色综合久久天天五月婷| 亚洲国产欧美日韩精品| 欧美日韩人人澡狠狠躁视频| 亚洲欧美国产一区二区三区| 久久国产高清| 宅男噜噜噜66国产日韩在线观看| 亚洲图片欧美一区| 一色屋精品视频在线看| 亚洲精品看片| 国产亚洲成年网址在线观看| 亚洲国产精彩中文乱码av在线播放| 欧美久久一级| 久久xxxx精品视频| 欧美va天堂| 久久国产精品72免费观看| 免费日韩成人| 欧美中文字幕久久| av成人免费观看| 欧美精品久久久久久久久老牛影院| 亚洲精品亚洲人成人网| 在线亚洲精品福利网址导航| 国产亚洲精品美女| 亚洲精品久久久久| 国产在线精品成人一区二区三区 | 久久亚洲欧洲| 欧美肉体xxxx裸体137大胆| 久久欧美中文字幕| 国产精品国码视频| 亚洲日本欧美| 亚洲国产欧美一区二区三区同亚洲| 亚洲一区二区在线播放| 一本色道久久综合狠狠躁的推荐| 欧美一区亚洲| 亚洲欧美国产不卡| 欧美精品尤物在线| 美日韩丰满少妇在线观看| 国产精品日日做人人爱| 91久久夜色精品国产网站| 在线播放日韩专区| 先锋影院在线亚洲| 午夜亚洲性色福利视频| 欧美日韩国产欧| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲国产合集| 久久国产精品网站| 久久aⅴ国产欧美74aaa| 国产精品麻豆成人av电影艾秋| 亚洲卡通欧美制服中文| 日韩香蕉视频| 欧美精品激情| 亚洲人成网站影音先锋播放| 亚洲人www| 欧美国产精品中文字幕| 亚洲第一黄网| 亚洲三级免费电影| 欧美mv日韩mv国产网站app| 欧美国产激情| 亚洲日本中文| 欧美激情一区三区| 亚洲精品久久久久久久久久久| 9人人澡人人爽人人精品| 欧美日韩免费高清一区色橹橹| 日韩视频亚洲视频| 亚洲综合色激情五月| 国产精品私拍pans大尺度在线| 亚洲午夜电影| 久久美女艺术照精彩视频福利播放| 国外成人在线视频| 久久亚洲午夜电影| 最新精品在线| 亚洲欧美三级在线| 国产欧美一区视频| 久久久久国产精品www| 亚洲欧洲一区二区三区在线观看| 欧美日韩亚洲视频一区| 91久久精品国产91久久性色| 日韩系列在线| 国产精品亚洲产品| 久久久青草婷婷精品综合日韩 | 欧美乱大交xxxxx| 日韩网站在线观看| 欧美在线观看一区二区三区| 狠狠久久亚洲欧美| 欧美电影免费观看高清完整版| 亚洲精品免费观看| 午夜视频一区在线观看| 亚洲国产成人av| 欧美日韩系列| 久久久久国产精品一区二区| 亚洲黄色影片| 欧美在线高清| 99av国产精品欲麻豆| 国产视频在线观看一区二区| 欧美91福利在线观看| 亚洲午夜免费视频| 欧美激情无毛| 久久精品亚洲一区二区三区浴池| 亚洲黑丝一区二区| 国产欧美日韩一级| 欧美片在线观看| 久久久伊人欧美| 亚洲欧美日韩视频二区| 亚洲精品免费一二三区| 久久久精品一区二区三区| 一本不卡影院| 永久免费精品影视网站| 国产精品久久国产精品99gif | 性一交一乱一区二区洋洋av| 亚洲国产精品欧美一二99| 欧美一区二区精品| 一区二区三区视频观看| 亚洲国产精品久久久久久女王| 国产精品一区二区三区观看| 欧美日韩直播| 欧美国产日韩在线| 久久久美女艺术照精彩视频福利播放 | 欧美sm重口味系列视频在线观看| 亚洲欧美国产77777|