跳至主要內容
Lizely

JSON 轉 Zod 模式轉換器

從一個 JSON 例子推匯出可審查的 Zod 模式,包含巢狀物件、陣列、合併型態、可空值以及可選的合併欄位。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼上一個有效且具代表性的 JSON 值,並輸入一個有效的模式識別字。
  2. 2.產生 Zod 原始碼,然後檢查可選、可空、合併、數值以及空陣列的選擇。
  3. 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 版本,編譯輸出內容,並在那裡執行驗證測試。

開發者工具 使用指南

查看全部