跳到主要內容

← 返回部落格

JSON 是什麼?5 分鐘看懂結構與常見錯誤

JSON(JavaScript Object Notation)是網路上最常見的資料交換格式。API 回傳它、設定檔用它、日誌裡到處是它。雖然名字裡有 JavaScript,它其實與語言無關 —— Python、Go、Java 幾乎所有語言都能讀寫。5 分鐘帶你搞懂。

基本組成

一份 JSON 由幾種型別組成:

  • 物件(Object) —— 用大括號包起來的鍵/值對:{ "name": "Ada", "age": 36 }
  • 陣列(Array) —— 用中括號包起來的有序清單:[1, 2, 3]
  • 字串(String) —— 用引號括起來的文字:"hello"
  • 數字(Number) —— 423.14-7(不加引號)
  • 布林(Boolean) —— truefalse
  • null —— 明確的空值

物件與陣列可以互相巢狀到任意深度,JSON 就是這樣表示複雜資料的。

一個簡單範例

{
  "user": "ada",
  "active": true,
  "roles": ["admin", "editor"],
  "profile": { "age": 36, "city": "London" }
}

這是一個物件,包含字串、布林、字串陣列,以及一個巢狀物件。

最容易踩雷的規則

大多數「JSON 無效」的錯誤來自這幾個地方:

  1. 多餘的逗號。 [1, 2, 3,] 在 JavaScript 有效,但在 JSON 無效,要移除最後一項後面的逗號。
  2. 單引號。 JSON 的鍵與字串值都必須用雙引號。{'name': 'Ada'} 無效,必須是 {"name": "Ada"}
  3. 鍵沒加引號。 {name: "Ada"} 是 JavaScript 物件字面值,不是 JSON。鍵必須是加引號的字串。
  4. 註解。 JSON 沒有註解語法,// 像這樣 會導致解析錯誤。
  5. 值的型別錯誤。 數字與布林不該加引號,除非你真的要它們當字串。

如何快速修好壞掉的 JSON

當程式丟出解析錯誤,最快找出問題的方法是把文件丟進驗證器。貼進 JSON 格式化工具:語法有錯它會指出大概位置並告訴你原因;語法正確後,按「美化」看清楚結構,或按「壓縮」在送出前縮小體積。

什麼時候(不)該用 JSON

JSON 很適合設定檔與 API 資料。但它不適合非常龐大的資料集(串流或二進位格式更有效率),也不適合需要註解的文件(YAML 或 TOML 更友善)。不過對絕大多數網頁工作來說,JSON 就是通用語言 —— 現在你已經能流利地讀懂它了。

想整理一下 JSON?試試免費的 JSON 格式化工具 —— 全程在瀏覽器執行,資料不外傳。