從 JSON 資料自動產生 JSON Schema 並進行類型推斷
工具功能
- 智慧類型推斷: 從 JSON 值自動偵測資料類型,包括字串、數字、布林值、陣列、物件和 null,智慧偵測 email、URL、日期、時間等格式
- 多版本支援: 支援 JSON Schema Draft 2020-12、2019-09、Draft-07 和 Draft-04,提供正確的 $schema URI 和版本特定功能
- 驗證規則: 配置必填欄位、類型約束、格式驗證和嚴格模式,使用 additionalProperties 控制實現強大的 schema 定義
- 靈活配置: 根據 API 文件和驗證需求,選擇包含或排除欄位描述、範例和嚴格驗證規則
使用方法
- 輸入 JSON 資料: 貼上您的範例 JSON 資料或載入範例開始
- 配置選項: 選擇 Schema 版本,啟用必填欄位、描述和其他選項
- 產生 Schema: 點擊產生以建立具有自動類型推斷的 JSON Schema
- 使用 Schema: 複製或下載產生的 schema 用於 API 驗證或文件
生成原理
JSON Schema 規範
JSON Schema 是用於描述 JSON 資料結構和驗證規則的宣告性語言。它使用 '類型'、'properties'、'必填'、'項目' 和 'additionalProperties' 等關鍵字來定義約束。該規範經歷了多個草案版本的演進,Draft 2020-12 是最新的穩定版本。Schema 本身是有效的 JSON 文件,可用於驗證、文件化和程式碼生成。
類型推斷演算法
產生器分析 JSON 值以推斷適當的 schema 類型。對於原始值,它偵測 字串、number、integer、boolean 或 null。對於字串,它使用正規表示式模式應用格式偵測,識別 email、uri、date、time、ipv4、ipv6 和其他標準格式。對於物件,它遞迴產生帶有屬性定義的巢狀 schema。對於陣列,它從第一個元素推斷 schema。
驗證關鍵字
JSON Schema 提供豐富的驗證關鍵字:'類型' 用於資料類型,'必填' 用於必填欄位,'properties' 用於物件 schema,'項目' 用於陣列,'minimum'/'maximum' 用於數字,'minLength'/'maxLength' 用於字串,'pattern' 用於正規驗證,'enum' 用於允許值,'格式' 用於語義驗證如 email 或 URL。這些關鍵字組合建立全面的驗證規則。
常見問題
- 什麼是JSON Schema,為什麼要使用它?
- JSON Schema是一種用於註釋和驗證JSON文件的詞彙表。它使用JSON格式本身描述資料結構、約束和驗證規則。優勢包括:自動資料驗證、API文件、程式碼產生、改善開發者體驗和基於契約的開發。它廣泛用於API設計、設定驗證和表單產生。
- 這個工具可以從任何JSON產生schema嗎?
- 可以!此工具分析任何有效的JSON輸入並產生相應的JSON Schema Draft-07相容schema。它處理所有JSON資料類型:物件、陣列、字串、數字、布林值和null。它從您的範例資料推斷類型、必填欄位和基本模式。對於複雜場景,您可能需要手動最佳化產生的schema。
- 產生的schema有多準確?
- 產生器基於樣本資料分析建立schema。它準確識別資料類型和結構,但對約束做保守假設。例如,它不會知道數字是否應該只為正數,或字串是否必須符合特定模式,除非這些約束出現在所有樣本中。始終使用您的領域特定驗證規則審查和增強產生的schema。
- 我可以使用產生的schema進行驗證嗎?
- 當然!產生的schema完全相容JSON Schema驗證器,如Ajv、joi或json-schema程式庫。您可以使用它驗證API請求/回應、設定檔或使用者輸入。該schema遵循JSON Schema Draft-07規範,可以整合到節點.js、Python、Java或任何支援JSON Schema的語言中。
- 不同JSON Schema草案之間有什麼區別?
- JSON Schema經歷了多個草案演變(Draft-04、Draft-06、Draft-07、2019-09、2020-12)。此工具產生廣泛支援的Draft-07 schema。主要區別:Draft-07新增了if/then/else條件,Draft 2019-09引入詞彙系統,Draft 2020-12新增unevaluatedProperties。對於大多數用途,Draft-07提供出色的相容性和功能集。
相關文件
- JSON Schema 官方網站 - JSON Schema 官方規範和文件
- 理解 JSON Schema - JSON Schema 概念和用法的綜合指南
- JSON Schema Draft 2020-12 - 最新的 JSON Schema 規範文件
- JSON Schema 驗證器 - 線上工具用於驗證 JSON 是否符合 schema
- OpenAPI 和 JSON Schema - JSON Schema 在 OpenAPI 規範中的使用方式