在 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 則退守到以文件為中心的利基領域。

追溯依據

參考來源

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