用途:本技能面向使用 Zod v4 的开发者,说明如何通过原生 z.toJSONSchema() 把 Zod 模式转换为 JSON Schema,并给出选项、注意事项与常见模式。
主要能力:支持配置 target('draft-4'、'draft-7'、'draft-2020-12'、'openapi-3.0',draft-7 兼容性最广,会自动补 $schema);metadata 配合 z.globalRegistry 把 .meta({ id }) 的模式提取为 definitions;reused 控制内联或引用;unrepresentable 决定无法表示的类型是抛错还是输出 any;io 选择 input 或 output(默认 output);cycles 处理循环引用。override(ctx) 回调可在遍历中直接修改 ctx.jsonSchema,用于 Zod 未提供选项的场景(如把 z.date() 转为 date-time 字符串),它在默认转换后执行,遇到不可表示类型需同时设置 unrepresentable: 'any'。
使用方式:模式上可用 .describe() 补充描述,.meta({ $ref }) 注入外部引用供 IDE 自动补全,.passthrough() 允许未知字段,z.partialRecord() 让枚举键可选。可为 .meta() 生成的 id 字段在 override 中删除以避免冗余。可用 AJV validateSchema 校验生成结果,并写重生成比对测试防模式与产物脱节。示例外部引用需服务端带 CORS 头,配置文件的 $schema 指向该 URL。
适用场景:为配置、frontmatter、API 载荷等生成 JSON Schema,服务给编辑器与智能体用于自动补全与校验。
限制:z.transform() 等运行时行为无法表示为 JSON Schema;资料未提供具体价格、平台支持或性能数据。