JSON 是什麼?資料交換格式完整入門指南
在現代 Web 開發中,不論是前端還是後端,JSON(JavaScript Object Notation)幾乎無處不在。從 REST API 的回應格式到設定檔,JSON 已經成為最普及的資料交換格式之一。本文將帶你從零開始認識 JSON,了解它的語法規則、資料型別以及實際應用場景。
JSON 的起源與歷史
JSON 最早由 Douglas Crockford 在 2001 年提出,其設計靈感來自 JavaScript 的物件字面量語法。然而,JSON 本身是一種與語言無關的資料格式,幾乎所有主流程式語言都有內建的 JSON 解析與生成支援。
2006 年,JSON 被正式標準化為 RFC 4627。2017 年,IETF 發布了更新版的 RFC 8259,成為目前最新的 JSON 標準規範。同時,ECMA International 也將 JSON 定義為 ECMA-404 標準。
JSON 的基本語法
JSON 的語法非常簡潔,主要由兩種結構組成:
- 物件(Object)— 以大括號
{}包圍的鍵值對集合 - 陣列(Array)— 以中括號
[]包圍的有序值列表
JSON 支援以下六種資料型別:
| 資料型別 | 範例 | 說明 |
|---|---|---|
| 字串 (String) | "Hello" | 必須使用雙引號 |
| 數字 (Number) | 42, 3.14 | 整數或浮點數 |
| 布林值 (Boolean) | true, false | 必須小寫 |
| 空值 (Null) | null | 表示空值 |
| 物件 (Object) | {"key": "value"} | 巢狀結構 |
| 陣列 (Array) | [1, 2, 3] | 有序列表 |
注意:JSON 的鍵名(key)必須使用雙引號包圍,這是 JSON 與 JavaScript 物件字面量的主要差異之一。單引號或不加引號都是無效的 JSON。
JSON 與 JavaScript 的關係
雖然 JSON 的語法源自 JavaScript,但兩者並不完全相同。JavaScript 物件允許使用單引號、不加引號的鍵名、尾隨逗號等,這些在 JSON 中都是不合法的。
JavaScript 提供了兩個內建方法來處理 JSON:
- JSON.parse() — 將 JSON 字串解析為 JavaScript 物件
- JSON.stringify() — 將 JavaScript 物件轉換為 JSON 字串
這兩個方法是前端開發中最常用的 JSON 操作,也是 API 通訊的基礎。
JSON 的常見應用場景
1. REST API 資料傳輸
絕大多數的 REST API 都使用 JSON 作為請求和回應的資料格式。相比 XML,JSON 更輕量、更易讀,且解析速度更快。根據 ProgrammableWeb 的統計,超過 70% 的公開 API 使用 JSON 格式。
2. 設定檔
許多開發工具和框架使用 JSON 作為設定檔格式,例如 package.json(Node.js)、tsconfig.json(TypeScript)、.eslintrc.json(ESLint)等。
3. NoSQL 資料庫
MongoDB、CouchDB 等 NoSQL 資料庫使用類似 JSON 的格式(BSON、JSON Document)來儲存資料,使得資料結構更加靈活。
4. 資料儲存與快取
瀏覽器的 localStorage 和 sessionStorage 通常搭配 JSON 來儲存結構化資料。Redis 等快取系統也廣泛使用 JSON 格式。
JSON 的優點與限制
| 優點 | 限制 |
|---|---|
| 語法簡潔,易於閱讀 | 不支援註解 |
| 跨語言、跨平台支援 | 不支援日期型別 |
| 解析速度快 | 大型資料集效能較差 |
| 原生 JavaScript 支援 | 不支援二進位資料 |
| 人類可讀 | 沒有命名空間 |
實用建議:JSON 不支援註解是許多開發者的痛點。如果你需要帶註解的設定檔,可以考慮使用 JSON5 或 JSONC 格式,它們是 JSON 的超集,支援單行和多行註解。
如何確保 JSON 格式正確?
在開發過程中,JSON 格式錯誤是常見的問題來源。一個多餘的逗號、缺少的引號或不正確的巢狀結構都可能導致解析失敗。使用我們的線上 JSON 格式化工具,可以快速驗證和美化你的 JSON 資料:
- 貼上你的 JSON 資料
- 工具會自動檢查語法錯誤
- 一鍵格式化為易讀的結構
- 支援壓縮、複製等常用操作
結語
JSON 從一個簡單的資料表示法,發展成為現代軟體開發中不可或缺的基礎技術。無論你是前端工程師、後端開發者還是資料分析師,深入理解 JSON 都能幫助你更有效率地處理資料交換與整合任務。
參考文獻
- Bray, T. "The JavaScript Object Notation (JSON) Data Interchange Format." IETF RFC 8259, 2017. https://datatracker.ietf.org/doc/html/rfc8259
- ECMA International. "The JSON Data Interchange Syntax." ECMA-404, 2nd Edition, 2017. https://ecma-international.org/publications-and-standards/standards/ecma-404/
- Crockford, D. "Introducing JSON." json.org. https://www.json.org/json-en.html
- Mozilla Developer Network. "JSON." MDN Web Docs. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON