如何从 JSON 示例数据生成 JSON Schema
将合法的 JSON 样例粘贴到输入框并生成,工具会根据解析出的对象、数组或基础值建立 JSON Schema。结果带有 JSON Schema draft-07 标识,但仍需按实际业务规则复核。
先确定样例和使用场景
Schema Generator 用于读取 JSON 示例数据,并根据解析后的值生成 JSON Schema 表示。它适合处理接口样例、配置片段或数据记录,让你先得到一份可继续检查和整理的结构。输入可以是对象、数组或单个 JSON 值,也可以填写一个便于识别的标题;标题留空时会使用默认标题“Generated Schema”。
使用前,先准备一段语法正确的 JSON 文本。生成结果反映的是样例中实际出现的结构,不能自动补充样例没有展示的业务规则。例如,某个字段是否允许缺省、数值范围如何限定、字段之间是否存在条件关系,都需要结合实际需求再检查。把它看作从样例开始整理结构的工具,而不是替代业务设计的最终文件。这样的准备能减少因输入格式不正确或样例信息过少而产生的误解。存放说明文字、注释或其他非 JSON 内容时,应先将这些内容移除。必要时可以准备多个代表不同情况的样例,再分别观察生成结果。
从输入到生成结果
-
准备格式正确的 JSON 文本。对象可以写成
{"name":"Lin","age":18};如果要整理列表结构,也可以准备合法的 JSON 数组。键名需要使用双引号,括号、逗号和字符串引号都要彼此匹配。 -
将样例粘贴到样例数据输入框中。若界面提供标题输入框,可以填写一个能说明样例用途的名称;不填写或清空标题时,结果会采用“Generated Schema”。
-
提交或选择生成操作。工具会先解析样例数据,再根据解析出的值建立 JSON Schema 表示。格式错误的 JSON 不会被转换成结果,因此提交前应删除前后多余文本,并检查引号和括号。
-
查看返回的结构。对象样例会按成员生成属性,数组样例会生成数组结构,单个值则会按照对应的 JSON 类型处理。若选定输入的 UTF-8 编码超过 1,000,000 字节,操作会被拒绝;样例过大时,可保留能够代表目标结构的内容后再试。
-
如果主样例数据输入为空,可以检查是否存在可用的替代输入。工具能够从
json、data、text、input、value或sample等别名取得样例,但没有可用样例数据时,操作仍会失败。
阅读结构并检查边界
对象样例会得到对象 Schema,并为每个成员建立属性 Schema。样例中观察到的成员名称会列入 required,同时会禁止额外属性,所以一条字段齐全的记录可能产生比业务需求更严格的结构;如果实际数据允许缺少字段,生成后要重新检查这部分设置。
数组样例会得到数组 Schema。空数组不会提供具体的项目约束,无法仅凭空数组判断项目应包含哪些字段。数组项目的结构出现差异时,结果会删除重复的项目 Schema,再用 anyOf 组合不同结构。对于单个值,null、布尔值、整数和浮点数分别会推断为 null、boolean、integer 和 number 类型。
字符串通常会得到 string 类型;当内容符合工具识别的模式时,还可能获得 email、uuid、uri、ipv4、date-time、date 或 time 格式。生成结果包含 JSON Schema draft-07 标识。若输入本身不合法,工具会拒绝它,而不会替你修复文本;因此结果应结合未出现在样例中的规则继续复核。
使用示例
你要为一条包含姓名和年龄的 JSON 记录快速整理出可继续复核的对象 Schema。
在样例数据输入框中粘贴 {"name":"Lin","age":18},提交生成,不填写标题,然后查看返回的对象结构。
结果是对象 Schema,包含 name 和 age 两个属性;这两个观察到的成员会列入 required,并禁止额外属性,同时结果包含 JSON Schema draft-07 标识。
使用限制
- 结果只根据提交样例中观察到的结构和字符串模式推断,不能补足样例未展示的业务规则或字段关系;格式错误的 JSON 也不会被自动修复。
常见错误
- 提交后没有生成结果时,先确认样例数据并非空白,再检查是否混入说明文字、键名是否缺少双引号以及括号是否配对;修正为合法 JSON 后重新提交。
常见问题
可以用 JSON 数组生成 Schema 吗?
可以,前提是数组文本本身符合 JSON 语法。空数组只能产生项目结构不受限定的数组 Schema;项目结构不同时,结果会使用去重后的 anyOf 组合。生成后仍应根据真实项目形式检查结构。
主输入为空时还能提供 JSON 样例吗?
可以,条件是主样例数据输入为空,并且替代输入中确实存在可用值。可检查 json、data、text、input、value 和 sample 这些别名;没有可用数据时,操作会失败。
标题输入可以留空吗?
可以填写标题,也可以留空。空标题会回退到“Generated Schema”,因此不填写标题不会阻止工具根据样例建立结构。选择标题时,建议使用能区分样例用途的名称。