JSON 转 Zod Schema
从 JSON 数据即时生成 Zod 验证 schema,支持嵌套对象、数组、nullable 字段和可选属性。完全在浏览器中运行。
使用方法
- 将 JSON 数据粘贴到左侧面板(或点击示例)。
- 设置根 Schema 名称(用于导出常量和类型)。
- 可选:启用严格模式以禁止多余字段。
- 点击生成 Zod Schema。
- 点击复制将结果粘贴到你的项目中。
输出格式
生成器输出完整的 TypeScript 代码片段,包括:
import { z } from “zod”— Zod 导入const FooSchema = z.object({…})— Schema 定义export type Foo = z.infer<typeof FooSchema>— 推断的 TypeScript 类型
常见使用场景
- API 验证:从 API 响应示例生成 schema,在运行时验证真实响应。
- 表单验证:将表单预期的数据结构转换为 Zod schema,用于 react-hook-form 等库。
- 配置文件:定义和验证从 JSON 文件加载的配置对象。
- 类型安全:与 TypeScript 结合,从单一 schema 同时获得运行时验证和静态类型推断。
FAQ
什么是 Zod?
Zod 是一个 TypeScript 优先的 schema 声明和验证库,让你定义数据结构并在运行时进行验证。广泛应用于 API 响应验证、表单验证和配置解析。
生成器如何推断类型?
生成器检查每个 JSON 值:字符串 → z.string(),布尔 → z.boolean(),整数 → z.number().int(),浮点 → z.number(),null → z.null(),数组 → z.array(),对象 → z.object()。对于对象数组,只在部分 item 中出现的 key 会被标记为 optional。
什么是严格模式?
启用严格模式后,每个 z.object() 后会追加 .strict(),Zod 会拒绝包含 schema 中未定义的多余字段的输入对象。不启用时,多余字段会被静默忽略(Zod 默认行为)。
生成的 schema 可以直接用于生产吗?
生成的 schema 是良好的起点,建议进一步审查和完善,例如为字符串和数字添加 .min()/.max() 约束,将 nullable 字段改为 .nullable().optional(),或将嵌套 schema 拆分为独立的命名常量。
我的 JSON 数据会发送到服务器吗?
不会。所有处理均在浏览器中完成,JSON 数据不会离开你的设备。