開發者 / 類型

JSON轉Zod Schema轉換器

從JSON範例產生Zod schema及其TypeScript型別,支援巢狀物件、陣列、選用與可為null的欄位,以及整數。

JSON轉Zod Schema轉換器: 範例中的每個物件都會成為z.object schema,並匯出由該schema推導的型別;巢狀物件則會取得各自的命名schema。陣列中的物件會合併處理:部分物件缺少的鍵會加上.optional(),有時為null的鍵會加上.nullable(),整數則會加上.int()。產生的schema已使用Zod解析自己的範例進行檢查。 全程在瀏覽器中於本機執行,檔案不會上傳至伺服器。

使用次數
在瀏覽器中
費用
免費・免註冊
可用狀態
可立即使用
JSON 轉 Zod本機處理

全程在瀏覽器中執行

TypeScript

import { z } from "zod";

export const AddressSchema = z.object({
  city: z.string(),
  zip_code: z.string(),
});
export type Address = z.infer<typeof AddressSchema>;

export const UserSchema = z.object({
  id: z.number().int(),
  user_name: z.string(),
  avatar_url: z.string(),
  score: z.number(),
  tags: z.array(z.string()),
  address: AddressSchema,
  manager_id: z.number().int().nullable(),
  nickname: z.string().optional(),
});
export type User = z.infer<typeof UserSchema>;

export const UserListSchema = z.array(UserSchema);

每個物件都會取得一個結構描述和推斷出的型別。部分物件中缺少的鍵會加上.optional(),有時為 null 的鍵會加上.nullable(),整數會加上.int();API 無法保證的規則請放寬。

使用結構描述

呼叫Schema.parse(data)可驗證資料,遇到錯誤資料時會擲出例外;呼叫Schema.safeParse(data)則會取得可檢查的結果,不必使用try和catch。從z.infer匯出的型別會隨你編輯結構描述而同步更新。

如果只需要編譯時型別,JSON轉TypeScript會提供一般介面;如要依照現有的JSON Schema進行驗證,請使用JSON Schema驗證工具。

收緊產生的規則

範例只會顯示其中包含的內容,因此請將結構描述視為起點:在適用的文字欄位加入.email()、.url()或.datetime();對固定值集合的欄位使用z.enum([...]);如資料有上下限,則加入.min()或.max()。

使用方式

  1. 貼上JSON範例,最好使用包含數筆典型記錄的陣列。
  2. 為最上層型別命名。
  3. 複製產生的schema,並用來在執行階段驗證資料。

隱私與限制

JSON會在您的瀏覽器中轉換,絕不會上傳。

相關工具

常見問題

為什麼要使用Zod,而不是TypeScript介面?

介面在程式編譯後就會消失,因此無法在執行階段檢查資料;Zod schema可以檢查資料,並透過z.infer提供相同的型別。

整數真的應該使用.int()嗎?

只有在您的API保證使用整數時才適用。如果價格或分數可能包含小數,即使範例只有整數,也應移除.int()。

它能處理日期或電子郵件等字串嗎?

這些值會被標記為z.string();請根據資料需求加入.email()、.url()或日期檢查等精化驗證。

免費工具・使用在瀏覽器中次・免註冊