JSON 轉 Zod 模式轉換器
從一個 JSON 例子推匯出可審查的 Zod 模式,包含巢狀物件、陣列、合併型態、可空值以及可選的合併欄位。
隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。
使用方式
- 1.貼上一個有效且具代表性的 JSON 值,並輸入一個有效的模式識別字。
- 2.產生 Zod 原始碼,然後檢查可選、可空、合併、數值以及空陣列的選擇。
- 3.將原始碼複製到已安裝 Zod 的專案中,並針對權威資料合約進行測試。
關於JSON 轉 Zod 模式轉換器
JSON 轉 Zod 模式轉換器可將一個有效的 JSON 值轉換為可讀的 Zod 原始碼。貼上一個物件、陣列或基本型態,選擇一個有效的 JavaScript 標識來作為輸出模式的名稱,並產生一個匯入語法、模式宣告以及推匯出的 TypeScript 型態。輸出為純文字內容,可供審查與複製;此頁面不會載入 Zod、執行產生的程式碼,或上傳樣本。
基本的 JSON 值會對應到相應的文件化 Zod 建構函式:字串對應 z.string,有限的 JSON 數值對應 z.number,布林值對應 z.boolean,以及 null 對應 z.null。物件會轉為 z.object 呼叫,其屬性依照出現順序來處理。有效的 JavaScript 標識會保持不加引號;空格、連字元、數字開頭、引號以及其他不安全的名稱會以 JSON 字串轉義方式輸出,以確保產生的物件結構為有效的原始碼。
陣列會根據輸入預算內的每個元素來推導。同質樣本會產生一個元素型態的模式。混合的基礎型態或結構樣本會產生一個確定性的 z.union。null 與另一種觀察到的型態結合會變成可空值。空陣列沒有關於未來元素型態的證據,因此會刻意轉為 z.array(z.unknown()),而不是猜測為字串或永遠不成立。巢狀陣列與物件會遞迴處理。
當陣列包含物件時,其屬性會被合併。在所有樣本物件中都出現的屬性會被視為必填。至少一個物件中缺失的屬性會被視為可選,相同鍵下的值會遞迴合併。這僅是樣本推導,並非真實合約的證明。一個樣本中出現的欄位在生產環境中仍可能為可選,一個樣本中缺失的值也可能合法。請在審查 API 檔案與代表性測試資料後再進行驗證。
此生成器不會推導字串格式、最小值、最大值、整數限制、列舉、字面值、區分合併、日期、UUID、URL、電子郵件、品牌、轉換、預設值、轉換函式、精煉、記錄、元組、嚴格物件行為、遞迴引用或商業規則。它避免這些推測,因為拼寫與小樣本無法確立意圖。僅從權威合約中手動新增這些規則。
混合值會以確定的順序排列,以確保相同 JSON 的重複轉換產生穩定的原始碼。相同模式會被去重。JSON 解析會在推導之前進行,因此 JavaScript 備註、尾隨逗號、NaN、Infinity、undefined、BigInt 語法、單引號字串以及物件字面量會被拒絕,而不是靜默修復。數值已經經過 JSON.parse 處理,因此遵循 JavaScript 數值精確度;需要精確小數語義的識別碼或貨幣值應保留為字串。
工作範圍限制在 500,000 輸入字元、50,000 訪問值、40 巢狀層級以及 1,000,000 產生字元。若超過限制將回傳明確錯誤,絕不會產生不完整的模式。即使在這些限制下,過深或過寬的範例仍可能作為劣質合約檔案。建議使用小型代表性測試資料,並將獨立的載荷拆分為獨立的模式。
八個外部語法測試範例涵蓋所有 JSON 基本型態、同質與混合陣列、必填物件屬性,以及透過合併物件樣本產生的可選欄位。額外測試涵蓋可空性、引號屬性名稱、匯出型態命名、無效 JSON 與無效模式識別字。複製後,安裝並固定目標專案中的正確 Zod 版本,格式化原始碼,編譯並測試接受與拒絕的生產情境。
方法與來源
解析嚴格的 JSON,遞迴地將基本型態與結構轉換為文件化的 Zod 表示式,合併陣列元素模式,標記缺失的物件欄位為可選,將 null 與型態結合轉為可空,對不安全的鍵加上引號,去重確定性的合併,並在任何靜默截斷之前失敗。
常見問題
- 產生的模式是否能證明我的 API 合約?
- 不能。它僅描述單一樣本中的觀察結果。必填欄位、格式、範圍、列舉與商業規則必須與權威檔案及更廣泛的測試資料進行比對。
- 為何空陣列會使用 z.unknown()?
- 空樣本無法提供關於元素型態的證據。未知是明確的不確定訊號,避免臆測為字串、數值或永遠不成立的限制。
- 此頁面會安裝或執行 Zod?
- 不會。它僅輸出原始碼。請在自己的專案中安裝所需的 Zod 版本,編譯輸出內容,並在那裡執行驗證測試。
相關工具
- JSON 驗證工具確認 JSON 是否有效,並以行與列為單位精確指出語法錯誤,同時提供結構診斷,全程在瀏覽器中執行。
- JSON 格式化工具在瀏覽器中格式化、壓縮並驗證 JSON —— 可以美化顯示或壓縮為單行,並精確標示錯誤位置。
- 從 JSON 轉換為 CSV將一個非空的 JSON 物件陣列,以預設的電子表格公式保護方式,轉換為 RFC 4180 風格的 CSV,並在本機執行。
- HTML 表格轉換為 JSON 工具從第一個 HTML 表格中提取文字,並將行轉換為可預測的 JSON 物件,並安全處理標題欄位。
- ANSI 色彩碼產生器建立並複製原始 SGR 逸出序列,並搜尋標準 8 色加亮 8 色的終端機色碼。
- ASCII 表格查詢所有標準 7 位 ASCII 編碼的精確十進位、十六進位、八進位與二進位值。
開發者工具 使用指南
查看全部- JSON Schema to Zod: Inference Limits and a Safer Path (英文原文)
- Convert JSON to a Zod Schema From a 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 (英文原文)
- 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 (英文原文)