JSON 转 Zod Schema

从 JSON 数据即时生成 Zod 验证 schema,支持嵌套对象、数组、nullable 字段和可选属性。完全在浏览器中运行。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册
JSON 输入
Zod Schema 输出

使用方法

  1. JSON 数据粘贴到左侧面板(或点击示例)。
  2. 设置根 Schema 名称(用于导出常量和类型)。
  3. 可选:启用严格模式以禁止多余字段。
  4. 点击生成 Zod Schema
  5. 点击复制将结果粘贴到你的项目中。

输出格式

生成器输出完整的 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 数据不会离开你的设备。