国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Json的優(yōu)缺點

2019-11-09 17:58:11
字體:
來源:轉載
供稿:網(wǎng)友

JSON的定義    一種輕量級的數(shù)據(jù)交換格式,具有良好的可讀和便于快速編寫的特性。業(yè)內(nèi)主流技術為其提供了完整的解決方案(有點類似于正則表達式 ,獲得了當今大部分語言的支持),從而可以在不同平臺間進行數(shù)據(jù)交換。JSON采用兼容性很高的文本格式,同時也具備類似于C語言體系的行為。 xml的定義    擴展標記語言 (Extensible Markup Language, XML) ,用于標記電子文件使其具有結構性的標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言。 XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。XML 提供統(tǒng)一的方法來描述和交換獨立于應用程序或供應商的結構化數(shù)據(jù)。[  XML ]使 用XML作為傳輸格式的優(yōu)勢:1. 格式統(tǒng)一, 符合標準2. 容易與其他系統(tǒng)進行遠程交互, 數(shù)據(jù)共享比較方便

XML的十字路口: 瀏覽器和 Ajax   XML設計原理已經(jīng)發(fā)布了將近十年。時至今日,這種標記語言已經(jīng)在廣闊的軟件應用領域中占據(jù)了主導地位。從java、.NET等主流平臺中的配置和部署描述符到應用集成場景中更復雜的應用,XML與生俱來的語言無關性使之在軟件架構師心目中占據(jù)著獨特的地位。但即便最著名的XML權威也不得不承認:在某些環(huán)境中,XML的使用已經(jīng)超出了它自身能力的極限。   圍繞Ajax原理構建的那些Web應用程序最能說明XML的生存能力,從這一點來看,一種新的有效負載格式的發(fā)展壯大也得益于XML。這種新的有效負載格式就是JavaScript Object Notation (JSON)。在探索這種新的標記語言的復雜性之前,首先來分析一下在這種獨特的設計形式中,XML具有哪些局限性。   Ajax建立了一個用于從遠程Web services發(fā)送和接收數(shù)據(jù)的獨立信道,從而允許Web程序執(zhí)行信道外(out-of-band)客戶端/服務器調用。通俗地說,Ajax程序中的更新和導航序列在典型的客戶端/服務器環(huán)境之外完成,在后臺(即信道外)接受到信息后,必須進行一次完整的屏幕刷新。更多背景信息,請參閱David Teare的 Ajax簡介(Dev2Dev)。   這些應用程序更新通常是通過REST風格(RESTful)Web services獲得的,一旦被用戶的瀏覽器接收到,就需要整合到HTML頁面的總體布局之中,這正是XML發(fā)揮強大力量的場合。盡管近年來,腳本語言支持和插件支持已使大多數(shù)主流瀏覽器的功能得到了強化,但許多編程任務依然難于開展,其中之一就是操縱或處理文本,這通常是使用DOM實現(xiàn)的。   采用DOM的復雜性源于其基于函數(shù)的根,這使得對數(shù)據(jù)樹的簡單修改或訪問都需要進行無數(shù)次方法調用。此外,眾所周知,DOM在各種瀏覽器中的實現(xiàn)細節(jié)不盡相同,這一過程將帶來極為復雜的編程模式,其跨瀏覽器兼容性出現(xiàn)問題的可能性極大。接下來的問題顯而易見,那就是:如何使一種標記語言輕松集成到HTML頁面中以滿足Ajax的要求?   問題的答案就是:利用所有主流瀏覽器中的一種通用組件——Javascript引擎。XML需要使用DOM之類的機制來訪問數(shù)據(jù)并將數(shù)據(jù)整合到布局之中,采用這種方法,我們不再使用像XML這樣的格式來交付Ajax更新,而是采用一種更為簡單直觀的方式,采用JavaScript引擎自然匹配的格式——也就是JSON。   既然已經(jīng)明確了JSON與XML和Ajax之間的關系,下面將進一步探討JSON背后的技術細節(jié)。 JSON剖析:優(yōu)點和不足   對于JSON,首先要明白JSON和XML一樣也是一種簡單文本格式。相對于XML,它更加易讀、更便于肉眼檢查。在語法的層面上,JSON與其他格式的區(qū)別是在于分隔數(shù)據(jù)的字符,JSON中的分隔符限于單引號、小括號、中括號、大括號、冒號和逗號。下圖是一個JSON有效負載:

Java代碼 復制代碼{"addressbook": {"name": "Mary Lebow",       "address": {           "street": "5 Main Street"          "city": "San Diego, CA",           "zip": 91912,       },       "phoneNumbers": [           "619 332-3452",           "664 223-4667"      ]    }   }  [java] view plain copy{"addressbook": {"name": "Mary Lebow",      "address": {          "street": "5 Main Street"          "city": "San Diego, CA",          "zip": 91912,      },      "phoneNumbers": [          "619 332-3452",          "664 223-4667"      ]   }  }  

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

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>  [xml] view plain copy<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句法的優(yōu)點和不足。 

優(yōu)點:1. 數(shù)據(jù)格式比較簡單, 易于讀寫, 格式都是壓縮的, 占用帶寬小2. 易于解析這種語言, 客戶端JavaScript可以簡單的通過eval_r()進行JSON數(shù)據(jù)的讀取3. 支持多種語言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, php, Python, Ruby等語言服務器端語言, 便于服務器端的解析4. 在PHP世界, 已經(jīng)有PHP-JSON和JSON-PHP出現(xiàn)了, 便于PHP序列化后的程序直接調用. PHP服務器端的對象、數(shù)組等能夠直接生JSON格式, 便于客戶端的訪問提取.5. 因為JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發(fā)量, 但是完成的任務不變, 且易于維護缺點:1. 沒有XML格式這么推廣的深入人心和使用廣泛, 沒有XML那么通用性2. JSON格式目前在Web Service中推廣還屬于初級階段JSON 和 XML 優(yōu)缺點的比較1.       在可讀性方面,JSON和XML的數(shù)據(jù)可讀性基本相同。JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規(guī)范的標簽形式,很難分出勝負。2.       在可擴展性方面,XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。3.       在編碼難度方面,XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。4.       在解碼難度方面,XML的解析得考慮子節(jié)點父節(jié)點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸?shù)恼媸菦]話說。5.       在流行度方面,XML已經(jīng)被業(yè)界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發(fā)展一定是XML讓位于JSON。到時Ajax應該變成Ajaj(Asynchronous Javascript and JSON)了。6.       JSON和XML同樣擁有豐富的解析手段。7.       JSON相對于XML來講,數(shù)據(jù)的體積小。8.       JSON與JavaScript的交互更加方便。9.       JSON對數(shù)據(jù)的描述性比XML較差。10.   JSON的速度要遠遠快于XML。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 诸城市| 历史| 明光市| 淅川县| 湘潭县| 上虞市| 浪卡子县| 望城县| 静宁县| 武安市| 巴里| 马公市| 鹤壁市| 镇宁| 岳普湖县| 陵水| 嘉黎县| 若羌县| 浦江县| 彰化县| 无锡市| 韩城市| 远安县| 呼图壁县| 永春县| 建宁县| 大余县| 乐都县| 姚安县| 阳城县| 托克托县| 济宁市| 电白县| 辰溪县| 海城市| 香格里拉县| 古蔺县| 北川| 小金县| 聂荣县| 秦安县|