← 所有文章

JSON Schema 驗證完整教學:確保資料正確性

2026 年 3 月 · 閱讀時間約 8 分鐘

當 API 越來越複雜,如何確保資料的結構和內容符合預期?JSON Schema 提供了一套標準化的方式來描述和驗證 JSON 資料的結構。本文將從基礎概念開始,帶你完整了解 JSON Schema 的使用方法。

什麼是 JSON Schema?

JSON Schema 是一種用來描述 JSON 資料結構的規範。它本身也是一份 JSON 文件,用來定義另一份 JSON 資料應該具備的結構、資料型別和約束條件。

JSON Schema 的主要用途包括:

JSON Schema 基本關鍵字

JSON Schema 使用一系列關鍵字來定義資料結構。以下是最常用的關鍵字:

關鍵字用途範例值
type定義資料型別"string", "number", "object"
properties定義物件的屬性包含各屬性的 Schema
required必填欄位列表["name", "email"]
minLength字串最小長度1
maxLength字串最大長度255
minimum數字最小值0
maximum數字最大值100
pattern正則表達式驗證"^[a-z]+$"
enum限定允許的值["active", "inactive"]
items定義陣列元素的 Schema元素的 Schema 定義

進階驗證功能

1. 條件驗證

JSON Schema 支援條件邏輯,可以根據某些欄位的值來決定其他欄位的驗證規則。使用 ifthenelse 關鍵字可以實現條件驗證。例如,當 type"company" 時,要求 taxId 為必填欄位。

2. 組合驗證

JSON Schema 提供了四個組合關鍵字:

3. 參照($ref)

使用 $ref 可以引用其他 Schema 定義,實現結構重用。這在大型 API 中特別有用,可以避免重複定義相同的資料結構。

最佳實踐:將常用的資料結構(如地址、分頁資訊)定義為獨立的 Schema,然後在需要的地方使用 $ref 引用,保持 DRY(Don't Repeat Yourself)原則。

JSON Schema 與 OpenAPI

OpenAPI Specification(以前稱為 Swagger)廣泛使用 JSON Schema 來定義 API 的請求和回應格式。如果你正在開發 REST API,JSON Schema 知識可以直接應用在 OpenAPI 文件中。

OpenAPI 3.1 版本完全支援 JSON Schema Draft 2020-12,使得 API 文件和資料驗證可以無縫整合。

常用的 JSON Schema 驗證工具

語言套件說明
JavaScriptAjv目前最快的 JSON Schema 驗證器
PythonjsonschemaPython 社群最常用的驗證套件
Javaeverit-org/json-schema支援 Draft 4-7 的驗證器
Goxeipuuv/gojsonschemaGo 語言的 JSON Schema 驗證
PHPjustinrainbow/json-schemaPHP 的 JSON Schema 驗證

JSON Schema 版本演進

JSON Schema 經歷了多個草案版本的演進:

開始驗證你的 JSON

在撰寫 Schema 之前,先確保你的 JSON 資料格式正確。使用我們的格式化工具快速檢查:

立即使用 JSON 格式化工具 →

結語

JSON Schema 是確保資料品質的強大工具。無論是在 API 開發、資料管線還是表單驗證中,它都能幫助你定義清晰的資料合約,減少因資料格式錯誤導致的問題。投入學習 JSON Schema 的時間,將在長期的專案維護中獲得豐厚回報。

參考文獻

  1. JSON Schema Organization. "JSON Schema Specification." json-schema.org. https://json-schema.org/specification
  2. Wright, A. et al. "JSON Schema: A Media Type for Describing JSON Documents." IETF Internet-Draft, 2022. https://json-schema.org/draft/2020-12/json-schema-core
  3. OpenAPI Initiative. "OpenAPI Specification v3.1.0." OpenAPI, 2021. https://spec.openapis.org/oas/v3.1.0
  4. Ajv Contributors. "Ajv JSON schema validator." GitHub. https://ajv.js.org/