JSON 转 Zod 校验模式
JSON to Zod Schema
从 JSON 样例构建 Zod schema,自动推断 nullable、optional 和枚举。
把一份 JSON 样例文档变成 Zod schema——TypeScript 类型给不了的运行时检查。输出是一组按声明顺序排列的 `z.object` 常量,外加根的推断类型,所以粘贴一次同时得到解析器和类型。
示例 JSON
拖入 .json 文件
在这个标签页里读取,不上传。
手上有几条就全放进来。每多一条记录,推断就更收紧一点——某条里缺了的字段,正是它被判成可选的依据。
TypeScript
怎么用
有多少条记录就粘贴多少
每个数组的每个元素都会被读取并合并,不只是第一个。三条记录告诉它的远比一条多,因为某个字段在其中一条里缺失,正是让那个字段变成可选的依据。
给根类型起名
嵌套对象按持有它的键命名,数组会转成单数,所以 `users` 得到 `User`。只有根需要你起名。
读输出下方的计数
类型数、可选字段数、联合类型数,以及合并了多少条记录。联合类型计数大于零,说明某个字段在你的样本里出现过两种不同的值——把结果粘进代码库之前值得看一眼。
粘进去,用它解析
各个块按子先父后的顺序输出,这在 Zod 里很要紧:一个引用了后面才声明的常量的 `z.object` 会在导入时抛错,而不是类型检查失败。请保持生成的顺序。
常见问题
为什么 schema 和我的接口契约不一致?
因为它描述的是样本,不是契约。标成可选的字段只是在你粘贴的某一条记录里没出现;标成必填的字段,在你还没见够的接口里仍然可能是可选的。把输出当作一份需要手工收紧的初稿。
有没有 email、uuid、最小长度这类细化规则?
没有。全部是 `z.string()`、`z.number()` 或 `z.boolean()`,样本里所有数字都是整数时加 `.int()`。因为字符串里有个 @ 就加 `.email()` 是猜测,而一条错的细化规则会在生产环境拒绝合法数据。
空数组会变成什么?
变成 `z.array(z.unknown())`,因为空数组对元素类型什么都没说。粘一条数组不为空的记录,schema 就会自己填上。
这是给哪个 Zod 版本用的?
输出的调用是 Zod 3 和 4 里相同的那些——`z.object`、`z.array`、`z.union`、`.nullable()`、`.optional()`,以及双参数形式的 `z.record(z.string(), z.unknown())`。没有用到任何版本特有的东西。
可以从这些接进来
JSON 转 TypeScript 类型
JSON to TypeScript
从一份 JSON 样例推断 TypeScript 接口或类型,合并可选字段和联合类型。
JSON Schema 生成
JSON to JSON Schema
从一份或多份样例推断 JSON Schema,把见到的各种形态并起来。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
YAML 格式化与校验
YAML Formatter & Validator
统一 YAML 缩进并校验语法,把会让解析器崩掉的制表符和锚点错误标出来。
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
JSON Schema 校验
JSON Schema Validator
用 JSON Schema 校验文档,每一处失败都带上它在实例里的路径。
JSON Schema 生成
JSON to JSON Schema
从一份或多份样例推断 JSON Schema,把见到的各种形态并起来。
JSON 转 TypeScript 类型
JSON to TypeScript
从一份 JSON 样例推断 TypeScript 接口或类型,合并可选字段和联合类型。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。
文本哈希计算
Text Hash
算出字符串的 MD5、SHA-1、SHA-256、SHA-384、SHA-512 和 CRC-32,输出可选大写或 Base64。