Schema 生成 JSON 示例

Schema 生成 JSON 示例工具,粘贴一份 JSON Schema,生成符合约束的示例数据。支持 const / enum / default / examples 字面量、本地 $ref(definitions / $defs)解析、allOf / oneOf / anyOf 组合,以及邮箱、日期、UUID、网址等 format 的语义化占位值;循环引用有递归保护。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON Schema

    将 Schema 粘贴到输入框,或点击「填入示例」;Schema 不是合法 JSON 时会行内高亮出错位置。

  2. 2

    选择是否包含可选属性

    默认连不在 required 中的可选属性一起生成,示例更完整;只看必填结构时可关闭。

  3. 3

    停顿后自动生成

    停止输入约 400ms 即在 Worker 中生成 JSON 示例,单调序号机制自动丢弃过期结果。

  4. 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 面板自行验证。

工具免费吗?需要登录吗?

免费,不用注册登录,没有次数限制和广告。所有处理都在浏览器本地完成,数据始终只留在你的设备上。

相关工具