JSON 資料結構產生器
從樣本結構推匯出 Draft 2020-12 JSON Schema,包含必要欄位、可空值、陣列、混合型別與明確的不確定性。
隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。
使用方式
- 1.貼上代表性嚴謹的 JSON,並可選擇輸入簡潔的 Schema 標題。
- 2.產生並檢視必要欄位、可空性、陣列項目、anyOf 分支與開放物件行為。
- 3.複製 Schema 並使用具 Draft 2020-12 能力的生產環境驗證器測試正向與負向例項。
關於JSON 資料結構產生器
JSON Schema Generator 可將一個嚴謹的 JSON 值轉換為可讀的結構化 Schema,宣告 Draft 2020-12 語言。貼上代表性樣本,可選加入標題,產生、檢視並複製。解析與推導皆發生於當前標籤內,頁面不會上傳資料、執行驗證器,或與 Schema 註冊服務通訊。
JSON 字串、安全整數、其他數字、布林值和 null 會對應到 JSON Schema 型別。陣列使用從每個觀察到的元素推斷出的項目。空陣列會產生一個空的項目 schema,因為無法證明任何元素限制。相容的數字會將整數擴充套件為數字,而不相容的觀察型別則會成為確定的 anyOf 分支。
物件會產生 type object、properties 與 required。每一個在所有合併物件樣本中出現的屬性會被標記為 required。至少一個物件中缺失的屬性將不會出現在 required 中。屬性名稱會完全保留,包括標點符號與原型形的拼寫。生成器有意保留 additionalProperties,讓物件保持開放,因為單一樣本無法證明未觀察到的鍵是被禁止的。
Null 與直接型別的 schema 結合時,會將 null 加入型別陣列,同時保留屬性或項目。更複雜的組合使用 anyOf。巢狀物件和陣列會遞迴推斷。重複的等價分支會被移除,輸出順序是確定的,因此相同的輸入會產生適合審閱和版本控制的穩定文字。
這是一種結構樣本推導,而非 Schema 發現。生成器不會猜測格式、模式、列舉、const、minimum、maximum、multipleOf、長度、唯一性、描述、預設值、範例、廢除、readOnly、writeOnly、內容編碼、參考、錨點、ID、條件邏輯、未評估屬性或業務意義。僅從權威需求中新增這些內容。
URI 語言必須由 https://json-schema.org/draft/2020-12/schema. 驗證器明確支援,且格式僅能以註解方式提供,除非選擇的實作支援斷言行為。請使用與生產環境完全相同的驗證器、設定與詞彙來測試複製的 Schema,而非假設所有庫對每個關鍵字的解釋都一致。
嚴謹的 JSON 是必需的,因此註解、尾隨逗點、NaN、Infinity、undefined、BigInt 與 JavaScript 字面值會失敗。JavaScript 會在推導前解析樣本數值;僅安全整數會轉為整數,避免對較大值的四捨五入產生錯誤的精確性判斷。對精確度敏感的十進位數值與識別碼可能需要以字串形式處理,並搭配應用層驗證。
限制為 500,000 輸入字元、50,000 值、40 巢狀層級與 1,000,000 輸出字元。邊界錯誤將不會產生部分 Schema。八個外部測試案例涵蓋所有基本型別、空陣列與帶型別的陣列,以及合併物件的必要欄位。額外測試涵蓋可空項目、混合 anyOf 陣列、特殊屬性名稱與錯誤的 JSON。在發布前必須驗證接受與拒絕的例項。
方法與來源
解析嚴謹的 JSON,遞迴地將觀察到的原始值、陣列與物件轉換為 Draft 2020-12 關鍵字,將物件存在性合併至 required,將整數擴充套件為數值,將不相容的證據以 anyOf 形式表示,保留可空性,不指定 additionalProperties,並在錯誤時拒絕而非截斷。
常見問題
- 為何沒有 additionalProperties?
- 單一樣本無法證明未觀察到的鍵是被禁止的。產生的物件將保持開放,直到你的權威合約另有說明。
- 為何沒有推導格式與列舉?
- 拼寫或小樣本不足以作為語意約束的證據。請從文件需求中手動新增。
- Draft 2020-12 是否保證格式驗證?
- 沒有。格式可能僅以註解方式提供,取決於詞彙與驗證器設定。請確認你部署的實作內容。
相關工具
- JSON 驗證工具確認 JSON 是否有效,並以行與列為單位精確指出語法錯誤,同時提供結構診斷,全程在瀏覽器中執行。
- JSON 格式化工具在瀏覽器中格式化、壓縮並驗證 JSON —— 可以美化顯示或壓縮為單行,並精確標示錯誤位置。
- JSON 轉 Zod 模式轉換器從一個 JSON 例子推匯出可審查的 Zod 模式,包含巢狀物件、陣列、合併型態、可空值以及可選的合併欄位。
- JSON 轉 Rust Struct 工具從 JSON 推匯出支援 Serde 的 Rust Struct,包含巢狀物件、向量、可選欄位、null 值、重新命名以及標準化識別碼衝突。
- ANSI 色彩碼產生器建立並複製原始 SGR 逸出序列,並搜尋標準 8 色加亮 8 色的終端機色碼。
- ASCII 表格查詢所有標準 7 位 ASCII 編碼的精確十進位、十六進位、八進位與二進位值。
開發者工具 使用指南
查看全部- Create JSON Schema in Postman From a Response Sample (英文原文)
- Convert .properties Files to JSON Online (英文原文)
- Random MAC Address On or Off: A Developer Guide (英文原文)
- Generate a JWT for Testing: HS256 Tokens in Your Browser (英文原文)
- How to Decode JWT Tokens in Angular Apps (英文原文)
- JSON Schema to Zod: Inference Limits and a Safer Path (英文原文)
- Rust: Convert a Struct to a JSON String With serde (英文原文)
- How to Convert JSON to Excel in Python (英文原文)
- JSON to CSV Alternative With Built-In Formula Protection (英文原文)
- Format a JSON File in VS Code and in Your Browser (英文原文)
- Local JavaScript Playground Alternative for Safe Testing (英文原文)
- How to Convert IPv4 to a 32-Bit Integer for Storage (英文原文)
- Convert Decimal Numbers to IEEE 754 Floating Point Format (英文原文)
- HTTP Status Codes Alternative: A Registry-First Lookup (英文原文)
- How to Edit HTML in a Browser Using a Sandboxed Preview (英文原文)
- Format HTML Code from Notepad++ Without Plugins (英文原文)
- Why Is Hello World Used in Programming: A Practical Guide (英文原文)
- How to Make Flexbox Items Fill the Container Height (英文原文)
- File Signatures List Alternative: Twelve Verified Prefixes (英文原文)
- How to Open Excel Files Online in a Browser Preview (英文原文)