開發者 / 類型
JSON轉Zod Schema轉換器
從JSON範例產生Zod schema及其TypeScript型別,支援巢狀物件、陣列、選用與可為null的欄位,以及整數。
JSON轉Zod Schema轉換器: 範例中的每個物件都會成為z.object schema,並匯出由該schema推導的型別;巢狀物件則會取得各自的命名schema。陣列中的物件會合併處理:部分物件缺少的鍵會加上.optional(),有時為null的鍵會加上.nullable(),整數則會加上.int()。產生的schema已使用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()。
使用方式
- 貼上JSON範例,最好使用包含數筆典型記錄的陣列。
- 為最上層型別命名。
- 複製產生的schema,並用來在執行階段驗證資料。
隱私與限制
JSON會在您的瀏覽器中轉換,絕不會上傳。
相關工具
常見問題
為什麼要使用Zod,而不是TypeScript介面?
介面在程式編譯後就會消失,因此無法在執行階段檢查資料;Zod schema可以檢查資料,並透過z.infer提供相同的型別。
整數真的應該使用.int()嗎?
只有在您的API保證使用整數時才適用。如果價格或分數可能包含小數,即使範例只有整數,也應移除.int()。
它能處理日期或電子郵件等字串嗎?
這些值會被標記為z.string();請根據資料需求加入.email()、.url()或日期檢查等精化驗證。
免費工具・使用在瀏覽器中次・免註冊