JSON 是什麼?大白話講解(以及如何修復常見錯誤)
更新 2026-07-06
JSON 在現代軟體中無所不在 —— 設定檔、API 回應、資料庫和設定都依賴它。然而一個走位的逗號就能弄壞整個檔案,讓你盯著一個費解的「Unexpected token」錯誤。本指南用大白話講清 JSON 是什麼、它的語法究竟如何運作,以及如何診斷並修復你最常遇到的錯誤。
JSON 是什麼
JSON 是 JavaScript Object Notation 的縮寫。它是一種輕量、基於文字的格式,用於儲存和交換結構化資料。儘管有這個名字,它並不綁定 JavaScript —— 幾乎每種程式語言都能讀寫它,這正是它成為 Web API 預設語言的原因。
JSON 的全部意義在於人和機器都能讀。它用幾個簡單的構件組合來表示資料:
- 物件(Object) —— 用大括號
{ }包住的鍵/值對集合。 - 陣列(Array) —— 用方括號
[ ]包住的有序清單。 - 值(Value) —— 字串、數字、
true、false、null、物件或陣列。
這是一個小而完整的例子:
{
"name": "Ada Lovelace",
"active": true,
"age": 36,
"skills": ["math", "logic"],
"address": {
"city": "London",
"postcode": null
}
}讓人栽跟頭的規則
JSON 長得很像 JavaScript 物件,而這種相似正是大多數錯誤的來源 —— JSON 更嚴格。記住這些規則,你就能避開絕大多數錯誤:
1. 鍵和字串需要雙引號
每個鍵都必須是用雙引號括起來的字串,每個文字值也必須用雙引號。單引號不是有效的 JSON,儘管在 JavaScript 裡沒問題。
// 無效
{ 'name': 'Ada' }
// 有效
{ "name": "Ada" }2. 不能有末尾逗號
你不能在物件或陣列的最後一項後面留一個逗號。這是最常見的 JSON 錯誤,因為許多編輯器和語言在別處欣然允許它。
// 無效 —— 最後一個值後有逗號
{ "a": 1, "b": 2, }
// 有效
{ "a": 1, "b": 2 }3. 不能有註解
標準 JSON 沒有註解語法。以 // 開頭的行或用 /* */ 包住的區塊會導致解析錯誤。如果你需要註解,JSON5 或 YAML 這類格式允許 —— 如果那更合適,看看我們的 YAML 格式化工具。
4. 數字要樸素
數字不加引號,不帶前導零或末尾小數點。01、1. 和 .5 都無效;應寫作 1、1.0 和 0.5。
常見錯誤及修復方法
當解析器拒絕你的 JSON 時,它通常會報告一個行號和列號。那個位置指向解析器 放棄 的地方,往往就在真正錯誤的後面一點。以下是你最常見到的訊息及其真正含義:
- "Unexpected token } in JSON" —— 幾乎總是閉合大括號或方括號前的末尾逗號。刪掉多餘的逗號。
- "Unexpected string" / "Expected comma" —— 兩個值之間少了逗號,或者你在該放逗號的地方用了換行。
- "Unexpected token ' in JSON" —— 單引號。把它們換成雙引號。
- "Unexpected end of JSON input" —— 有個方括號或大括號從未閉合。數一數你的
{和};每個開括號都需要一個匹配的閉括號。 - "Unexpected token o in JSON" —— 一個經典信號,說明你試圖解析某個 本來 就已是物件、而非 JSON 字串的東西。只對文字呼叫解析器。
鎖定確切位置最快的方法,是把文字餵給一個邊走邊驗證的格式化工具。我們的 JSON 格式化與驗證工具 會標示第一個錯誤的精確行列,一旦 JSON 有效,就把它美化輸出,讓結構性問題(放錯的括號、多巢狀了一層的值)一眼可見。一切都在你的瀏覽器中執行,所以你可以安全地檢查私密或敏感資料。
格式化 vs. 壓縮(minify)
處理 JSON 時有兩個操作不斷出現。格式化(也叫美化或 pretty-print)加入縮排和換行,讓密集的一團變得可讀 —— 除錯時理想。壓縮(Minify) 剝掉每一個不必要的空格和換行,產出盡可能小的輸出 —— 在透過網路傳送或嵌入程式碼、體積要緊時理想。兩種方式的資料完全相同,只有空白改變。
快速清單
在把 JSON 交給程式之前,核對:
- 所有鍵和字串值都用雙引號。
- 沒有末尾逗號。
- 沒有註解。
- 每個方括號和大括號都成對。
- 通過驗證器且無錯誤。
把這五點做對,JSON 就成了它被設計成的樣子:一個無聊、可預測、就是好用的格式。如果真有東西漏了過去,把它貼進 JSON 格式化工具,讓它直接把問題指給你。
更多 資料格式與編碼
查看全部 資料格式與編碼 指南 →本指南提到的工具