Schema 生成 JSON 示例
Schema 生成 JSON 示例工具,粘贴一份 JSON Schema,生成符合约束的示例数据。支持 const / enum / default / examples 字面量、本地 $ref(definitions / $defs)解析、allOf / oneOf / anyOf 组合,以及邮箱、日期、UUID、网址等 format 的语义化占位值;循环引用有递归保护。
怎么使用
- 1
粘贴 JSON Schema
将 Schema 粘贴到输入框,或点击「填入示例」;Schema 不是合法 JSON 时会行内高亮出错位置。
- 2
选择是否包含可选属性
默认连不在 required 中的可选属性一起生成,示例更完整;只看必填结构时可关闭。
- 3
停顿后自动生成
停止输入约 400ms 即在 Worker 中生成 JSON 示例,单调序号机制自动丢弃过期结果。
- 4
复制或反向调整
复制结果;想修改 Schema 约束后重新生成、或把现有 JSON 反推成 Schema,都在同一页完成。
功能特点
字面量优先
Schema 中声明了 const、enum、default 或 examples 时直接采用,示例与作者意图保持一致。
$ref 本地解析
支持 #/definitions/* 与 #/$defs/* 指针引用,含 ~0 / ~1 转义;递归栈保护避免循环引用死循环。
组合关键字
allOf 合并各分支结果(对象取属性并集),oneOf / anyOf 取首个分支生成示例。
format 语义占位
email 生成 邮箱样式、date-time 生成 ISO 时间、uuid 生成标准 UUID,uri / hostname / ipv4 等同样有贴近真实的占位值。
数组与可选属性
识别 tuple 形式的 items;minItems 会补足示例元素(上限 5 个);可选属性可整体开关。
Worker 内生成
生成在独立 Worker 线程中完成,主界面不阻塞,改完 Schema 就能看到新结果。
常见错误与排查
- ! $ref 仅支持文档内本地指针(# 开头);跨文件 / 网络地址的引用无法解析,对应节点会输出 null 占位。
- ! 循环引用的 Schema 不会无限展开,第二次进入同一 $ref 时输出 null;如需可手工替换为具体示例。
- ! false schema(布尔 false,表示不接受任何数据)无法生成示例,工具会直接提示;true schema 会生成空对象。
- ! minItems 仅影响示例元素个数,最多生成 5 个,避免示例文档过长;pattern、maximum 等细粒度约束不会全部体现。
常见问题
生成的 JSON 一定能通过原 Schema 校验吗?
绝大多数情况下可以:type、required、const、enum、format 占位都按 Schema 生成。少数精细约束(pattern 正则、minimum 以外的数值范围、跨字段依赖)示例生成器不做完整推理,这类字段取通用占位值,正式使用前建议用 Schema 校验器复检一次。
支持哪些版本的 JSON Schema?
按 draft-07 语义处理,同时兼容 draft 2019-09 / 2020-12 中含义相同的关键字($defs、type、const 等)。布尔 schema、$ref、allOf/oneOf/anyOf 均支持;较新版本中的 prefixItems、unevaluatedProperties 等新关键字暂不特殊处理。
Schema 里有 $ref 怎么办?
文档内引用(#/definitions/...、#/$defs/...)会自动解析到对应子 schema 再生成;指针支持 ~0 与 ~1 转义。遇到循环引用时以 null 占位终止递归,不会卡死页面。外部 URL 引用因纯前端零网络策略不做拉取。
生成时我的 Schema 会上传吗?
不会。生成逻辑运行在浏览器本地的 Web Worker 中,站点没有后端服务,数据不会离开你的设备,也可以打开 Network 面板自行验证。
工具免费吗?需要登录吗?
免费,不用注册登录,没有次数限制和广告。所有处理都在浏览器本地完成,数据始终只留在你的设备上。