說到網頁開發,在過去遇到有資料要在伺服器、網頁及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