如何查看使用Zod创建的JSON Schema?
如何查看使用Zod创建的JSON Schema?
我来帮你解决这个问题~你现在遇到的情况应该是转换后的JSON Schema没有完整展示出来,其实你的代码逻辑大方向是对的,只是有几个小细节需要调整:
一定要用带缩进的
JSON.stringify打印完整结构
你提到直接console.log(jsonSchema)只看到$schema字段,这是因为Node.js的控制台在打印嵌套对象时,有时候会省略深层结构的展示(尤其是在默认配置下)。你代码里虽然写了JSON.stringify,但如果没加缩进参数,输出的是压缩后的字符串,可读性差;如果实际运行时没写JSON.stringify,直接打印对象就会出现结构缺失的情况。修改后的代码如下:
import { z } from "zod"; import { zodToJsonSchema } from "zod-to-json-schema"; const zodSchema = z.object({ name: z.string(), age: z.number() }); const jsonSchema = zodToJsonSchema(zodSchema); // 第二个参数是替换函数(这里用null),第三个参数是缩进空格数,让输出格式化 console.log(JSON.stringify(jsonSchema, null, 2));运行这段代码后,你就能看到完整的JSON Schema了,输出大概是这样:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "number"
}
},
"required": [
"name",
"age"
]
}检查依赖版本是否最新
如果你按上面的方法还是看不到完整结构,可能是zod或者zod-to-json-schema的版本太旧,存在转换不完整的bug。可以执行下面的命令更新到最新版本:npm install zod@latest zod-to-json-schema@latest直接访问Schema的具体字段(可选)
如果你不需要看完整结构,只想单独查看某个字段的Schema或者必填项列表,可以直接操作转换后的对象:// 打印name字段的JSON Schema定义 console.log(jsonSchema.properties.name); // 打印所有必填字段的列表 console.log(jsonSchema.required);
按照上面的方法调整后,你就能轻松看到用Zod创建的完整JSON Schema啦~




