XML 為機器對機器的資料提供了一套由標籤、命名空間與結構描述組成的文法——表達力強,卻也沉重到只要傳送一筆簡單記錄就得寫出一份文件。JSON 走了相反的路:正如其首頁所言,JSON 建立在兩種結構之上,一是名稱/值對的集合,二是有序的值清單,並採用 C、C++、C#、Java、JavaScript、Perl 與 Python 程式設計師早已熟悉的慣例——這正是那些頁面稱它為理想資料交換語言的原因。

這個格式的淵源,以及它如何脫離 JavaScript,都出現在其標準化過程中。RFC 8259〈JavaScript Object Notation (JSON) Data Interchange Format〉描述了一種輕量、以文字為基礎、與語言無關的資料交換格式,衍生自 ECMAScript 所定義的 JavaScript 字面量——每個網頁瀏覽器都認得它,卻不屬於其中任何一個。IETF 的 JSON 工作組讓它歷經 RFC 7159 走到 RFC 8259,使 JSON 於 2017 年 12 月成為網際網路標準。

其結果便是取代。API 過去要協商 XML 結構描述,如今則回傳任何程式設計師一眼就能讀懂的物件與陣列——這是一個先被採用、之後才進入標準程序的格式,而不是需要標準程序來招募採用者。

兩種結構就足以應付每一個 API

兩種結構——物件與陣列——就能組合成程式在系統之間傳遞的幾乎所有資料形狀,因此這個格式不需要任何擴充機制。

語法衍生自 JavaScript 字面量,使這個格式對成長最快速的開發者族群而言立即易讀,而與語言無關的特性則讓其他每個社群都留在其中。

不需要結構描述或標籤詞彙,因此 API 可以變更其承載內容,而不必協調文件類型定義。

在被採用之後才透過 IETF 標準化,既確保了互通性,又不必強加讓其前身不受青睞的沉重負擔。

一個格式靠減法取勝:建構元素越少,歧見就越少;而一個任何程式設計師無須文件就能讀懂的資料格式,消除了拖住更豐富前身的阻力。

RFC 8259 於 2017 年 12 月讓 JSON 成為正式的網際網路標準,而當時它早已成為網路 API、設定與日誌資料的預設交換格式——這是一個罕見的案例:一個格式是由工作組批准全世界既有行為而完成標準化。

追溯依據

參考來源

  1. RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format IETF (Datatracker) · datatracker.ietf.org ·
  2. Introducing JSON json.org · json.org