结构与类型生成

Schema 模拟数据生成器从约束生成可复现的测试样本

设置数量与种子,每条样本都按输入 Schema 校验。

Schema 模拟数据生成器

JSON Schema

生成结果

Schema 与样本仅在本浏览器处理,不会上传。

生成选项

每条样本分别符合输入 Schema,外层数组仅用于批量导出。

检查 Schema 后点击生成。

Schema 模拟数据生成器适合手头已有接口契约,却不想复制生产记录作为测试数据的场景。把测试真正依赖的必填字段、枚举和数值范围写进 Schema,再生成一组可检查的样本。

JSON Schema 生成模拟数据与随意造一份随机 JSON 数据不同:每条结果都要符合支持范围内的约束。数量控制外层记录数,Schema 自身决定每条记录的结构。

为什么用 Schema 模拟数据生成器

复现同一个失败用例

把 Schema、固定种子和选项随测试一起保存。同一引擎版本下可以重现同一批数据,方便定位回归问题;受约束的字段不会因为再次点击生成而无从追溯。

相同种子分别生成两组完全对应的合成样本。

靠近有效范围的两端

边界模式尝试可行的最小值与最大值,包括数值、字符串长度和集合大小。每条候选结果仍要通过独立校验;不支持的约束会阻止输出,不会被占位值悄悄替代。

有效区间两端的样本通过检查,不支持的约束被阻止。

先确定每条样本的契约

01

区分样本数量与数组长度

默认生成 5 条,种子为 42。根 Schema 如果是数组,每条样本本身就是数组;内层元素数量由 minItems 和 maxItems 控制,不能用面板上的样本数量替代。 种子须为 0–4294967295 的整数。

02

修改完成后再运行

选择普通或边界模式,用生成按钮或 Ctrl/Cmd+Enter 执行。修改输入或选项会立即禁用旧结果导出;停止会取消当前任务,过期任务不能覆盖新结果。

03

先读报告,再保存样本

出现不支持报告时,按路径逐项修改 Schema 后重新生成。示例与清空会先显示替换预览,应用后可撤销一次。JSONL 每行保存一个完整实例,便于逐条读取。

约束如何影响结果

嵌套对象与数组

properties、required 和 additionalProperties 共同控制对象内容。未出现的可选属性与显式 null 是两回事,后者必须被属性的 Schema 允许。

约束取交集

type 联合、enum、const 与同级约束共同生效。枚举里存在的数字如果越过 maximum,不能仅因属于枚举就被当作有效结果。

集合大小与唯一性

字符串长度、数组项数、对象属性数都按约束生成。uniqueItems 限制单个样本中的数组元素,不保证整批顶层样本彼此不同。

两种导出语义

JSON 始终用外层数组包装所有样本,数量为 1 也一样。JSONL 每行一个 JSON 值,可以是对象、数组或原始值;输入 Schema 校验的是各条样本,不是额外的导出包装。 JSON 固定缩进两个空格;JSONL 保持每条实例单行。

支持范围与生成限制

明确的 draft-07 子集
支持布尔 Schema、type 数组、enum、const、properties、required、additionalProperties、单 Schema items、uniqueItems、长度与数量限制,以及包含或排除端点的数值边界。建议明确 type:单独的约束可能允许其他类型。true Schema 生成简单整数。
不支持就停止
引用、组合、条件、pattern、format、multipleOf、元组 items 和未知关键字全部按路径报告并拒绝。enum 与 const 内的字面对象属于数据,其中的字段名不会被误判为 Schema 关键字。
边界不等于穷举
边界模式仍生成有效数据,不主动制造错误值,也不覆盖所有分支组合。数量较少时不保证每个端点都出现;常量或单值枚举可能让不同种子得到相同结果。
运行有明确预算
数量为 1–100。Schema 最多 100000 字符、语法树深度 12(包含 properties 和 enum 包装容器)、2000 个语法树节点;生成字符串最多 1000 个 UTF-16 单元,数组或对象最多 100 项。另有每条尝试次数、总操作预算和五秒工作线程超时。 总操作预算为 20000 步,输出最多 1000000 字符。 const 和 enum 值也遵守字符串与集合预算;种子须为 0–4294967295 的整数。
失败不一定说明无解
约束冲突、唯一值域不足或生成预算耗尽都可能失败。错误会说明检测到的原因;仅仅超过工具预算,不能推导出 Schema 在数学上不存在有效实例。
只生成合成数据
不提供姓名地址库、地区数据包、跨字段关联、在线 Mock API、远程地址导入或云端保存。数字精度受浏览器引擎支持范围约束,超出范围会拒绝,不能把结果当作任意精度的数据证明。 数值必须有限,整数须处于 JavaScript 安全整数范围;数字标记转为 Number 再转回文本时,十进制数值必须保持一致。

Schema 模拟数据生成器常见问题

随机种子怎样让结果复现?

固定种子决定生成序列。保留 Schema、数量、模式与引擎版本,就能复现同一批样本;const 或单值 enum 可能无论种子怎么改都输出相同值。

支持哪些 Schema 约束?

支持范围见规则中的 draft-07 子集。Schema 模拟数据生成器会独立校验每条输出;发现未知或不支持的约束时整次运行失败,不会忽略约束继续导出。

怎样生成多条测试数据?

数量可设为 1–100 条。这个数量是顶层实例数,嵌套数组的长度由 Schema 决定,并同时受生成预算限制。

生成的数据可以复制或下载吗?

可以复制或下载当前有效结果。JSON 导出为样本数组,JSONL 每行一个完整实例;修改输入或参数后,需要重新生成才能再次导出。

Schema 会上传到服务器吗?

不会。解析、采样和校验在当前浏览器中运行,也不会解析远程引用或向 Mock 服务发送 Schema。

有希望支持的约束?

试用 Schema 模拟数据生成器

先用 Schema 模拟数据生成器生成一个小批次,再对比普通样本与有效边界样本,检查是否覆盖你的具体测试意图。

将 Schema、种子和选项与结果一起保留,让其他开发者能够重现同一个用例。