辨认外层数组的含义
单文档模式把顶层数组作为真实数据结构,结果根类型仍是 array。多样本模式把外层数组拆成独立文档,因此适合合并几次接口响应;如果每份响应本来就是数组,应使用数组套数组。
样本与契约
先运行对象示例。只有外层数组中的每一项都是独立文档时,才切换多样本模式。
解析与生成在当前浏览器完成,样本不会上传或保存。
1 份样本 · 7 个属性 · 0 项枚举 · 省略 0 项枚举
JSON Schema 生成器适合只有接口响应、尚未形成字段文档的时候。某次请求恰好包含所有字段,并不代表以后也如此;把有缺项、空值或不同类型的记录放在一起,才能看到这份契约需要讨论的地方。
必填与可空不是同一项设置。属性存在但值为 null,仍满足 required;属性未出现,则不能靠允许 null 来通过必填检查。先理解这种区别,再决定哪些观察结果应成为正式规则。
JSON Schema 生成器会读取相同结构位置的全部数组元素。一条记录少了 tag,它就不再属于共同必填字段;另一条记录的 score 为 null,则把 null 合入类型。不同路径下的同名字段不会被混在一起。
进入编辑模式后,自动生成会关闭。补充说明或约束后,再修改样本并生成,只会出现独立候选结果;确认替换一份 Schema 才应用。撤销会一起恢复原来的输入、参数和输出,方便比较修改前后的选择。
单文档模式把顶层数组作为真实数据结构,结果根类型仍是 array。多样本模式把外层数组拆成独立文档,因此适合合并几次接口响应;如果每份响应本来就是数组,应使用数组套数组。
共同必填按同一位置的对象样本统计,不把 null 当成缺失。选择全部必填,会要求并集中所有字段,即使某份原样本缺少它。全部可空只扩大类型允许值,不会修改 required 列表。
输入或参数变化会立即使结果过期并禁用复制与下载。自动生成等待 350 毫秒,关闭后可按 Ctrl/Cmd+Enter。手编结果重新生成需要先查看候选并应用;清空和载入示例也提供一次撤销。
JSON Schema 生成器提供 Draft 7、2019-09 和 2020-12。输出只使用三者共有的类型、属性、必填、枚举和普通 items 语法,所以这里的版本选择改变的是 $schema 声明,不会迁移已有复杂模式。
嵌套数组的所有元素都参与合并,空数组只表示没有元素证据;全部为空时输出 items: {}。整数按数学值判断,1.0 与 100e-2 都是 integer,发现真正带小数的值后则合并为 number。
样本推断无法证明某个状态只有已经出现的几个值,因此枚举默认关闭。开启后,每个纯标量位置最多收集 20 个不同值;全部可空补入的 null 也计入上限。超过上限会整项省略 enum,并在状态中计数,不会悄悄截短值集合。
数值使用原始文本表示,超出安全整数范围也不会经过 JavaScript Number 四舍五入。1、1.0 与 1e0 按数学值去重并保留最先出现的写法。推断项可以直接编辑,之后只检查语法与根结构,不能代替完整模式验证。
默认只有在同一位置的每个对象里都出现的字段才进入 required。显式 null 仍算出现。也可以选择全部必填或全部不必填,分别收紧或放宽字段存在条件。
不同值类型在同一位置合并,null 作为真实类型保留。数字中只要出现非整数就使用 number。缺失字段只影响必填判断,不会自动变成 null。
单文档模式接受对象、数组和标量根值;多样本模式要求非空外层数组,每项代表一个独立文档。示例按钮会根据当前模式载入相应数据。
不会推断数字范围、字符串长度或精度约束。整数与小数类型会区分,枚举可选择开启,但样本中的最小最大值不能证明业务允许的边界。
本工具没有这四种模式切换,而是始终合并全部数组元素,生成统一 items。不会仅取首项,也不会把样本顺序猜成固定元组位置;需要位置约束时请手动补充并验证。
发现需要核对的推断结果?