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

首頁 > 學院 > 開發設計 > 正文

Json的優缺點

2019-11-09 16:57:59
字體:
來源:轉載
供稿:網友

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

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風格(RESTful)Web services獲得的,一旦被用戶的瀏覽器接收到,就需要整合到HTML頁面的總體布局之中,這正是XML發揮強大力量的場合。盡管近年來,腳本語言支持和插件支持已使大多數主流瀏覽器的功能得到了強化,但許多編程任務依然難于開展,其中之一就是操縱或處理文本,這通常是使用DOM實現的。   采用DOM的復雜性源于其基于函數的根,這使得對數據樹的簡單修改或訪問都需要進行無數次方法調用。此外,眾所周知,DOM在各種瀏覽器中的實現細節不盡相同,這一過程將帶來極為復雜的編程模式,其跨瀏覽器兼容性出現問題的可能性極大。接下來的問題顯而易見,那就是:如何使一種標記語言輕松集成到HTML頁面中以滿足Ajax的要求?   問題的答案就是:利用所有主流瀏覽器中的一種通用組件——Javascript引擎。XML需要使用DOM之類的機制來訪問數據并將數據整合到布局之中,采用這種方法,我們不再使用像XML這樣的格式來交付Ajax更新,而是采用一種更為簡單直觀的方式,采用JavaScript引擎自然匹配的格式——也就是JSON。   既然已經明確了JSON與XML和Ajax之間的關系,下面將進一步探討JSON背后的技術細節。 JSON剖析:優點和不足   對于JSON,首先要明白JSON和XML一樣也是一種簡單文本格式。相對于XML,它更加易讀、更便于肉眼檢查。在語法的層面上,JSON與其他格式的區別是在于分隔數據的字符,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句法的優點和不足。 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆川县| 精河县| 沙湾县| 梨树县| 霍林郭勒市| 临洮县| 平定县| 工布江达县| 双桥区| 榆社县| 山西省| 梨树县| 泾川县| 来宾市| 沂水县| 汶上县| 喀喇沁旗| 禹城市| 彭山县| 宁晋县| 广元市| 建宁县| 格尔木市| 乌拉特中旗| 万年县| 韶关市| 来凤县| 夹江县| 黎平县| 铜川市| 荆门市| 鄄城县| 肥乡县| 文安县| 宜川县| 红原县| 苍溪县| 博罗县| 武隆县| 九江市| 万荣县|