← 全部文章

JSON 格式範例:物件、陣列與現實模式

可直接複製的 JSON 範例,涵蓋每種資料型別、巢狀結構、REST API 回應、設定檔、日期格式與 GeoJSON —— 並附常見錯誤模式及其修復。

理解 JSON 最好的方式就是讀例子。本指南從最基礎開始走一遍 JSON 格式 —— 簡單物件、巢狀結構、陣列、混合型別 —— 然後展示你在 API、設定檔、資料庫中會遇到的真實 JSON 模式。每個例子都是合法、可複製貼上的 JSON。

把這些當成測試、fixture 或文件中的範例 json 檔 來用 —— 下面每個片段都是真實可用的 JSON 範例,可以直接存成 .json 副檔名的檔案載入。

最簡單的 JSON 範例

任何一個合法的 JSON 值都是完整的 JSON 文件。最簡單的 JSON 文件是基本型別:

"hello"        // 字串
42             // 數字
true           // 布林
null           // null

實務上,你遇到的幾乎每個 JSON 文件不是物件就是陣列。

JSON 物件範例

一個 JSON 物件是一組鍵-值對。鍵必須是雙引號包起來的字串。值可以是任何 JSON 型別。

{
  "id": 42,
  "name": "Alice Chen",
  "email": "alice@example.com",
  "age": 30,
  "active": true,
  "score": 98.6,
  "nickname": null
}

注意:JSON 物件中鍵的順序不保證 —— 解析器可能以任意順序回傳。

JSON 陣列範例

JSON 陣列是一個有序的值清單。元素可以是不同型別,順序始終保留。

// 字串陣列
["apple", "banana", "cherry"]

// 數字陣列
[1, 2, 3, 4, 5]

// 混合型別
[42, "hello", true, null, { "key": "value" }]

// 物件陣列(API 回應中常見)
[
  { "id": 1, "name": "Alice" },
  { "id": 2, "name": "Bob" },
  { "id": 3, "name": "Carol" }
]

巢狀的 JSON 範例

物件和陣列可以巢狀到任意深度。JSON 的表達力就來自這裡。

{
  "user": {
    "id": 1001,
    "name": "Alice Chen",
    "address": {
      "street": "123 Main St",
      "city": "San Francisco",
      "state": "CA",
      "zip": "94102"
    },
    "tags": ["premium", "early-adopter"],
    "preferences": {
      "notifications": {
        "email": true,
        "sms": false,
        "push": true
      },
      "theme": "dark"
    }
  }
}

JSON 格式範例:REST API 回應

一個典型的分頁 API 回應大概長這樣:

{
  "status": "success",
  "data": {
    "page": 1,
    "per_page": 10,
    "total": 47,
    "total_pages": 5,
    "items": [
      {
        "id": "prod_001",
        "name": "Wireless Headphones",
        "price": 89.99,
        "currency": "USD",
        "in_stock": true,
        "categories": ["electronics", "audio"],
        "rating": 4.7,
        "reviews_count": 2341
      },
      {
        "id": "prod_002",
        "name": "USB-C Hub",
        "price": 39.99,
        "currency": "USD",
        "in_stock": false,
        "categories": ["electronics", "accessories"],
        "rating": 4.2,
        "reviews_count": 891
      }
    ]
  },
  "meta": {
    "request_id": "req_8f3a2c",
    "timestamp": "2024-10-15T14:32:00Z"
  }
}

JSON 設定檔範例

JSON 格式的設定檔在 JavaScript 工具鏈中很常見。下面是典型的 package.json 結構:

{
  "name": "my-app",
  "version": "1.0.0",
  "description": "A sample application",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest",
    "build": "tsc"
  },
  "dependencies": {
    "express": "^4.18.2",
    "lodash": "^4.17.21"
  },
  "devDependencies": {
    "typescript": "^5.0.0",
    "jest": "^29.0.0"
  },
  "engines": {
    "node": ">=18.0.0"
  }
}

JSON 資料格式:日期與時間

JSON 沒有原生的日期型別。日期以字串表示。ISO 8601 是普遍接受的格式:

{
  "created_at": "2024-10-15T14:32:00Z",        // UTC 日期時間
  "updated_at": "2024-10-15T14:32:00+08:00",   // 帶時區偏移
  "birth_date": "1990-06-21",                   // 僅日期
  "meeting_time": "09:00:00"                    // 僅時間
}

也有些系統直接用數字形式的 Unix 時間戳(自紀元起的秒數):

{
  "created_at": 1728999120,
  "expires_at": 1761057600
}

帶可選欄位和 null 欄位的 JSON

欄位存在但沒有值就用 null。可選且確實不存在的欄位就整個省略。

{
  "id": 5,
  "name": "Bob",
  "email": "bob@example.com",
  "phone": null,            // 存在但未設定
  "company": "Acme Corp",
  "title": null             // 存在但未設定
  // "fax" 整個省略 —— 根本不適用
}

JSON 錯誤範例(以及怎麼修)

這些是常見的 JSON 書寫錯誤:

// ❌ 單引號(不是合法 JSON)
{ 'name': 'Alice' }

// ✅ 修:改用雙引號
{ "name": "Alice" }

// ❌ 鍵沒引號
{ name: "Alice" }

// ✅ 修:給鍵加引號
{ "name": "Alice" }

// ❌ 末尾多了逗號
{ "a": 1, "b": 2, }

// ✅ 修:移除末尾逗號
{ "a": 1, "b": 2 }

// ❌ JavaScript 註解
{ "debug": true // 啟用 logging }

// ✅ 修:移除註解
{ "debug": true }

// ❌ Python 風格的布林值
{ "active": True }

// ✅ 修:用小寫
{ "active": true }

如果你的 JSON 字串中有上述任何錯誤,貼到 JSON Fix 就會自動修復並格式化。

JSON Lines(NDJSON、jsonlines)範例

串流日誌、ML 資料集和大量 API 的慣例是一行一個 JSON 值,用 \n 分隔。這個格式有兩個名字 —— jsonlines(來自 jsonlines.org)和 NDJSON —— 但規格相同:

{"event":"login","user":"ada","at":"2026-05-28T09:00:00Z"}
{"event":"view","user":"ada","page":"/dashboard"}
{"event":"logout","user":"ada","at":"2026-05-28T09:42:00Z"}

每一行獨立解析。不要對整個檔案做 JSON.parse() —— 按換行切,逐行解析。

OpenAPI 回應範例

OpenAPI 規格以 JSON Schema 風格定義回應:

{
  "openapi": "3.1.0",
  "paths": {
    "/users/{id}": {
      "get": {
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": ["id", "email"],
                  "properties": {
                    "id":    { "type": "integer" },
                    "email": { "type": "string", "format": "email" }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

僅日期和僅時間的範例

ISO 8601 也定義了純日期和純時間的形式 —— 當一天中的具體時間或具體日期沒什麼意義時很有用:

{
  "birth_date":   "1815-12-10",         // 僅日期
  "office_hours": "09:00:00",           // 僅時間
  "started_at":   "2026-05-28T09:00:00Z" // 完整日期時間,對比用
}

GeoJSON 範例

GeoJSON 是基於 JSON 的地理資料標準格式:

{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [-122.4194, 37.7749]
  },
  "properties": {
    "name": "San Francisco",
    "country": "US",
    "population": 873965
  }
}

常見問題

什麼是合法 JSON 的範例?

最簡單的是單一基本型別,例如 42"hello",不過大多數實際的 JSON 是物件,例如 { "name": "Alice", "age": 30, "active": true },或是這種物件組成的陣列。

JSON 中日期怎麼表示?

JSON 沒有日期型別。日期以字串保存 —— 普遍使用 ISO 8601("2024-10-15T14:32:00Z"),或者用數字形式的 Unix 時間戳。

JSON 中怎麼表示缺失值?

欄位存在但無值就用 null;根本不適用的欄位就把鍵省略。JSON 沒有 undefined

巢狀的 JSON 長什麼樣?

物件和陣列可以巢狀到任意深度 —— 見上面的巢狀範例和 REST API 範例。底層規則請見 什麼是 JSON?

試試這些範例

把上面任何一個範例複製下來,貼到下面的工具裡探索資料: