解決方案
在 2000 年代初期,網路應用程式需要在伺服器與瀏覽器之間傳遞結構化資料。XML 聲勢正盛,但過於冗長,且需要解析器與結構描述;在 JavaScript 中處理它相當痛苦,而資料最終恰恰必須在 JavaScript 中落地。
Douglas Crockford 將 JSON 制定為一種輕量格式,建立在兩種通用結構之上:名稱/值物件與有序清單,並刻意以 JavaScript 程式語言標準(ECMA-262,第 3 版)的子集為基礎。因此瀏覽器可以原生解析它,而 json.org 的規格也公開出版,供任何人實作。
JSON 先在網路 API 開發者之間流傳,隨後擴散到各處。2017 年,IETF 發表了 RFC 8259《JavaScript Object Notation (JSON) Data Interchange Format》,其中說明 JSON 衍生自 ECMAScript 程式語言標準,而 JSON 也成為網路服務的預設資料交換格式。
它達成了什麼
成為那個將讀取你的語言的子集
為何奏效
原生 JavaScript 語法意味著最重要的用戶端能以零額外機制解析它。
這兩種資料結構直接對應到每一種主流語言的物件與陣列。
開放而簡單的規格消除了授權與學習障礙。
可借鑑之處
勝出的格式降低了第一次整合的成本:JSON 藉由符合主要消費者的原生語法,讓瀏覽器端的首次解析免費,之後的每一次移植也都隨之跟進。
後續發展
RFC 8259 於 2017 年將 JSON 正式確立為 IETF 標準,幾乎每一種程式語言都附帶解析器。它成為網路 API 的預設承載格式,也是一代 NoSQL 文件資料庫的範本,而 XML 則退守到以文件為中心的利基領域。
追溯依據
參考來源
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format IETF · datatracker.ietf.org
- Introducing JSON (json.org) JSON.org · json.org