拋棄了XML,你以為你就會用JSON嗎?這幾大要點教給你!
JavaScript對象標記是基於鍵值對和有序列表的結構化數據基於文本的表示。儘管JSON源自JavaScript,但它在大多數主要的編程語言中都是通過本地或庫來支持的。JSON通常用於在Web客戶端和Web伺服器之間交換信息。
在過去15年,JSON已經在網路上普遍存在。今天,它幾乎是所有公開Web服務的首選格式,同時也經常用於私人網路服務。
JSON的受歡迎程度導致許多資料庫的本機JSON支持。關係資料庫,如PostgreSQL和MySQL,現在支持存儲和查詢JSON數據。MongoDB和Neo4j等NoSQL資料庫也支持JSON,儘管MongoDB在後台使用了稍微修改後的JSON二進位版本。
下面我們來看一下JSON,並討論它的來源,它與XML相比的優勢和它的缺點等等。首先,我們從一個例子開始:
上面的結構清楚定義了一個人的某些屬性。它包括姓氏,已登錄次數,是否為作家,所在公司名稱以及所養寵物名單和類型(在本例中僅一個)。類似於上述的結構可以從伺服器傳遞到web瀏覽器或移動應用,然後這些應用將執行諸如顯示數據或保存數據之類的操作以備日後參考。
JSON是一種通用數據格式,其數值類型最少:字元串,數字,布爾值,列表,對象和空值。雖然符號是JavaScript的一個子集,但這些類型都以所有常見的編程語言表示,使得JSON成為跨越語言差距傳輸數據的良好候選者。
為什麼要使用JSON?
要了解JSON的有用性和重要性,我們必須了解一下網路互動歷史。
在21世紀初,網路上的互動開始發生轉變。當時,瀏覽器主要作為一個愚蠢的客戶端顯示信息,伺服器做了所有努力準備顯示內容。當用戶點擊瀏覽器中的鏈接或按鈕時,將向伺服器發送請求,伺服器將所需的信息轉換為HTML,瀏覽器會向用戶呈現一個HTML頁面。當要求瀏覽器重新呈現頁面上的所有內容,即使只有一部分頁面已更改,這種模式都是緩慢而低效的。
由於全頁面重新載入成本高昂,因此網頁開發人員開始尋求更新的技術來改善用戶體驗。同時,在Internet Explorer 5中引入的頁面顯示時,在後台進行Web請求的能力被證明是載入數據以便顯示的可行方法。點擊刷新按鈕不會重新載入頁面的整個內容,而是觸發在後台載入的Web請求。載入內容時,可以使用瀏覽器中的通用編程語言JavaScript(JavaScript)來操縱、保存和顯示數據。
最初,數據以XML格式傳輸(參見下面的示例),但XML在JavaScript中是冗長和難以管理的。JavaScript已經有對象,這是一種在語言中表達數據的方法,所以Douglas Crockford將該表達式的一部分作為新的數據交換格式規範,並將其稱為JSON。JSON可以讓人們更容易閱讀,並讓瀏覽器進行解析,很快Web開發人員喜歡JSON就勝過XML了。
到目前為止,JSON是用於在網路和移動客戶端和後端服務之間交換數據的事實標準。
JSON與XML
如上所述,JSON替代了XML,XML在新系統中越來越少見,很容易看出為什麼。以下是上面那個示例的XML版本:
除此之外,XML在解析為JavaScript數據結構時也引入了一些歧義。將XML轉換為JavaScript對象可能需要數十到數百行代碼,最終需要根據解析對象進行定製。將JSON轉換為JavaScript對象需要一行代碼,並且不需要有關解析對象的任何知識。
JSON的限制
雖然JSON是一種相對簡潔,靈活的數據格式,易於在許多編程語言中使用,但格式上還是有一些缺點。這裡有五個主要的限制:
1、沒有模式。一方面,這意味著程序員可以完全靈活地以任何方式表示數據。另一方面,這意味著可以非常輕鬆地創建錯誤數據。
2、僅一個數字類型:IEEE-754雙精度浮點格式是很好用的,但它意味著不能利用許多編程語言中可用的多樣和細微的數字類型。
3、沒有日期類型。這意味著開發人員必須使用一些字元串表示日期,這會導致格式化差異,或者必須以1970年1月1日的形式表示日期。
4、沒有注釋。這使得程序員無法內聯注釋欄位,需要添加額外的文檔並會增加誤解的可能性。
5、雖然JSON不像XML那麼冗長,但它也不是最簡潔的數據交換格式。對於大容量或專用服務,需要使用更高效的數據格式。
什麼時候應該使用JSON?
如果程序員正在編寫與瀏覽器或本地移動應用程序通信的軟體,則應使用JSON作為數據格式,使用像XML這樣的格式是一個過時的選擇。
在伺服器到伺服器通信的情況下,可能最好使用像Apache Avro或Apache Thrift這樣的序列化框架。JSON不是一個壞的選擇,仍然可能正是你需要的,但不如上述兩個效果好。
如果你正在使用NoSQL資料庫,在支持JSON作為類型的關係資料庫中,一個很好的經驗法則是儘可能少地使用它。針對符合特定模式的結構化數據調整關係資料庫。雖然大多數支持JSON形式更靈活的數據,但在查詢這些JSON對象屬性時,性能將會受到影響。
JSON是用於在Web伺服器、瀏覽器和移動應用程序之間發送數據的格式。其簡單的設計和靈活性使其易於閱讀和理解,在大多數情況下,程序員可以輕鬆地以所選擇的編程語言進行操作。缺乏嚴格的架構可以實現格式的靈活性,但這種靈活性有時難以確保正確閱讀和編寫JSON。
程序員可能需要多做一些工作來處理像Scala或Elm這樣的強類型語言中的JSON,但廣泛採用JSON意味著有庫和實用程序來幫助完成所有最難的部分。 在構建新的Web服務時,選擇JSON可能表示對相關領域缺乏了解。
※又一位程序員永遠離我們而去,他留下的經典又由誰演繹呢?
※Python是增長最快的編程語言!沒有之一!
※谷歌亞馬遜重磅加盟10月珠海耗材展 開啟展會大數據時代
※機器學習其實沒想的那麼難,谷歌TensorFlow應用案例解讀
※AI能從照片中識別性取向你敢信?
TAG:IT168企業級 |