單元 2 · 資料型別

六種型別、兩種容器、任意巢狀 — Data Types

JSON 的全部資料,只有六種型別。沒有日期、沒有 undefined、沒有 BigInt—— 所有資料都必須用這六種表達。記住它們,就記住了 JSON 的全部。

六種型別一覽

型別寫法對應(Python / JS)
字串 string"..." 雙引號str / String
數字 number423.14int / float · Number
布林 booleantrue / falsebool / Boolean
nullnullNone / null
物件 object{ "k": v }dict / Object
陣列 array[a, b]list / Array

基本型別 · Primitive Types

JSON · 原始碼
{
  "str":   "hello",
  "int":   42,
  "float": 3.14,
  "bool":  true,
  "none":  null
}

物件 · Object

物件是無序的鍵值組。鍵必須是字串(雙引號),值可以是任何型別。

JSON · 原始碼
{
  "name": "Alice",
  "age": 30
}
解讀 · EXPLAINED
鍵 "name"(字串)
└─ 值 "Alice"(字串)
鍵 "age"(字串)
└─ 值 30(數字)
注意:鍵必須加雙引號。{name: "Alice"} 是合法的 JS 物件,卻是非法 JSON

陣列 · Array

陣列是有序的清單,元素可以是任意型別(甚至混雜)。

JSON · 原始碼
["a", 1, true, null, [1,2]]
解讀 · EXPLAINED
陣列 [ ] 的四個元素:
0: "a"(字串)
1: 1(數字)
2: true(布林)
3: null
4: [1, 2](巢狀陣列)

巢狀 · Nesting

物件與陣列可以任意互相嵌套——這是真實世界資料的形狀。

JSON · 原始碼
{
  "users": [
    { "name": "Alice", "tags": ["dev"] },
    { "name": "Bob",   "tags": ["ops"] }
  ]
}
解讀 · EXPLAINED
物件
└─ users(陣列)
   ├─ 元素 0:物件 { name, tags }
   │    └─ tags:陣列 ["dev"]
   └─ 元素 1:物件 { name, tags }
        └─ tags:陣列 ["ops"]
實務比例:真實 API 大概八成的資料形狀是「物件包陣列、陣列裡再放物件」—— 讀懂這個 shape,就讀懂大部分 API。

JSON 沒有的型別

別的語言有JSON 要怎麼表達
日期 / 時間用字串,慣用 ISO 8601(如 "2026-08-15T10:00:00Z"
undefined沒有對應;通常省略欄位或改用 null
BigInt / 大數字精度有限(見單元 4),大數建議用字串
函式 / 物件實例無法表示——JSON 只存資料,不存邏輯
看完這頁你應該能說出:
  • JSON 的六種型別,以及「只有」這六種。
  • 鍵必須是加引號的字串。
  • 物件(無序鍵值)與陣列(有序清單)的差別。
  • 物件與陣列可以任意巢狀。
  • 日期等型別要用什麼方式表達。

延伸閱讀