Table of Contents

說到網頁開發,在過去遇到有資料要在伺服器、網頁及app之間傳輸的時候,通常會使用 XML 來處理。但隨者時代技術演進跟多種瀏覽器的流行,DOM 在各種瀏覽器的實現細節都不盡相同,使得這種依賴 DOM 的樹狀結構來編寫的 XML 格式,在不同瀏覽器之間的運作就漸漸顯得不太理想。那麼,有沒有不依賴 DOM 的樹狀結構,又能做到資料交換的別種資料格式呢?

於是這時,就是換 JSON 上場的時候啦。

JSON 是什麼?

簡單來說,JSON (JavaScript Object Notation,JavaScript 物件表示法) 是一種輕量級的資料交換格式,易於人閱讀和編寫,同時也易於機器解析和生成。

而 JSON 與 XML 的最大不同,就是 JSON 是基於 JavaScript engine (一種專門處理 JavaScript 的虛擬機,共通於目前市面上所有的瀏覽器) 來設計、但格式是獨立於任何程式語言的,因此 JSON 格式的資料可以不因瀏覽器的不同而受到影響,並且能被任何語言讀取或者序列化

舉個簡單的例子,如果要以 XML 格式來表示某個人的基本資料的話,看起來會是這樣子的:

<title>個人基本資料</title>

 <human id="1234">

   <name>Bonnie</name>

   <gender>女</gender>

   <age>100</age>

  </human>

但如果使用 JSON 的話,看起來就會變成這樣:

{

   "title": "個人基本資料",

   "id": 1234,

   "age": "100",

   "name": "Bonnie",

   "gender": "女"

}

在這裡我們可以看出來,相對於 XML 的編寫邏輯屬於一層包一層的階層架構,JSON 格式使用 Key-Value 這樣一對一的方式來儲存資料,可維護性和易讀性都大大增加。

而且在 JSON 中,也支援各種資料類型的儲存,比如陣列 (Array)、布林值 (Boolean)、數值 (Number)、物件 (Object) 和字串 (String) 等等,使 JSON 成為一種既靈活又多功能的資料儲存格式。

JSON 的應用場景

雖然 JSON 這個格式在網頁資料處理上這麼好用,也快速得到許多網頁開發者的歡迎,但也不是在所有的開發情境下都一樣普及。比如在 PHP 等現成套件工具中,還是有很多與 web 相關的應用採用 XML。

此外 JSON 在 1999 年首度被提出時,主要是為了可以在不安裝瀏覽器外掛的情況下,來處理伺服器到瀏覽器之間的即時通訊用的。

於是到了今天,JSON 格式也依然是許多 server 與外界溝通所常用的資料格式,甚至一些非關聯式的資料庫更是直接使用 JSON 來儲存,比如像 MongoDB 這樣 NoSQL 類型的資料庫等等。所以,與 server 有互相依賴關係的相關產品與服務當中,也經常能看到 JSON 的影子。比如 google、facebook、yahoo 等,他們所提供的 API 資料格式也都是 JSON。

延伸閱讀

關於 XML 與 JSON 之間的其他更加深入的比較,比如不同環境下的傳輸速度與效能差異、資源利用率等,可以參考:

Comparison of JSON and XML data interchange formats: A case study

https://www.researchgate.net/publication/220922905_Comparison_of_JSON_and_XML_data_interchange_formats_A_case_study