JSON 是什麼
JSON(JavaScript Object Notation)是一種讓人和機器都能輕鬆讀取的資料格式。名字裡雖有「JavaScript」,但不依賴特定程式語言,Python、Java、Go、PHP 等主流語言都能處理。
JSON 源自 JavaScript 物件字面量語法。2000 年代初期 Douglas Crockford 整理為獨立規範,隨後由 IETF 發布為 RFC 8259在新分頁中開啟、Ecma International 制定 ECMA-404在新分頁中開啟。兩份文件定義相同語法,符合規範的解析器間可無縫互通。
當時主流格式是 XML 但寫起來冗長,JSON 以簡潔語法迅速普及。手邊有 JSON 想確認語法或整理排版時,你可以貼到 FormatArc 的 JSON 格式化器。所有處理在瀏覽器內完成,輸入的資料不會傳輸到外部。
與其他資料格式的差異
JSON 是眾多資料格式之一。跟 XML、CSV、YAML 對比後,它的定位就清楚了。
| 格式 | 主要用途 | 特點 |
|---|---|---|
| JSON | API・資料交換 | 以機器處理為前提,語法簡單、速度快 |
| XML | 傳統系統・SOAP | 冗長但 schema 表達力強 |
| CSV | 試算表・ETL | 適合表格資料,不支援巢狀 |
| YAML | 設定檔案 | 方便人編輯,但解析速度較慢 |
JSON 被廣泛採用,是因為它處於「機器處理高效、人也能讀能寫」的平衡點。主流語言都將 JSON 解析器納入標準函式庫,跨語言互操作性強。
JSON 基本語法
物件
用大括號 {} 包住,鍵值對以冒號(:)分隔。鍵必須是雙引號包住的字串。
{
"name": "林小明",
"age": 30,
"city": "台北"
}
陣列
用方括號 [] 包住,值以逗號(,)分隔。可混用不同型別,但實務上通常保持同一型別。
["蘋果", "香蕉", "柳丁"]
JSON 的六種資料型別
字串
雙引號包住,特殊字元用 escape sequence(\n、\t)表示。
"greeting": "你好"
數字
整數和浮點數直接寫,不需引號。JSON 不支援 NaN、Infinity 或前導零(如 007)。
42
3.14
-10
布林值
只有 true 和 false,True、TRUE、1 均無效。
null
表示值不存在,只寫小寫。
物件與陣列的巢狀
物件裡放陣列、陣列裡放物件,自由組合:
{
"user": {
"name": "林小明",
"hobbies": ["讀書", "跑步"],
"address": {
"city": "台北",
"district": "信義區"
}
}
}
這種靈活的巢狀結構是 JSON 能表達複雜資料的原因。
JSON 的使用場景
Web API 資料交換
REST API 和 GraphQL 的回應格式,JSON 基本上是預設標準。用瀏覽器 fetch 函式從伺服器取資料,回傳的多半就是 JSON。
{
"status": "ok",
"data": {
"id": 1,
"title": "第一篇貼文"
}
}
設定檔案
package.json(Node.js)、tsconfig.json(TypeScript)、VS Code 的 settings.json 等設定檔都廣泛使用 JSON,因為人好讀好寫、程式也好解析。
資料儲存與日誌
NoSQL 資料庫(如 MongoDB)以近似 JSON 的格式(BSON)儲存資料。結構化日誌也越來越多使用 JSON Lines(每行一個 JSON 物件)。
表格資料轉換
從試算表匯出 CSV 後要餵給 API 或應用程式時,常需轉成 JSON。兩種格式結構不同,都了解會比較方便。
使用 JSON 時的注意事項
不能寫註解
JSON 沒有註解語法,//、/* */、# 都不行。想留備忘錄得用 "_comment" 變通,或改用 YAML、JSONC。
不能有尾隨逗號
最後一個元素後多一個逗號,JavaScript 可以接受但 JSON 會報錯。
鍵必須用雙引號
JavaScript 裡 { name: "林小明" } 可以省引號,JSON 必須寫 { "name": "林小明" }。
最上層只能有一個值
兩個物件並列不是合法 JSON,要放多個就包成陣列。
格式凌亂的 JSON 不僅難讀也是語法錯誤的常見原因。JSON 格式化器 可一鍵對齊排版並檢查語法。
小結
- JSON 是不依賴特定語言的輕量資料交換格式
- 物件(
{})與陣列([])兩種結構是基礎 - 資料型別共六種:字串、數字、布林值、null、物件、陣列
- 廣泛用於 Web API 回應與設定檔案
- 不能寫註解、不能尾隨逗號等限制需注意
- 整理排版與語法檢查可用 JSON 格式化器輔助

