JSON 模式生成器
粘贴一个或多个 JSON 样本,生成器便会推断出可用于校验新载荷的 JSON 模式。它能识别类型,将出现在所有样本中的字段标记为必填,在取值来自一个较小的封闭集合时推断枚举(enum),并生成符合 JSON 模式 draft 2020-12 的输出。
如何生成 JSON 模式
-
1
粘贴示例文档
一个或多个真实载荷,种类越丰富,推断出的模式就越精确。
-
2
选择草案
draft 2020-12(现行)、draft 07(广泛支持)或 draft 04(用于旧版 OpenAPI)。
-
3
调整推断
切换枚举推断、必填字段策略(交集与并集),以及仅提供单个样本时是否将所有字段标记为 `required`。
-
4
生成
模式将连同 `$schema`、`title`、`type`、`properties` 一起输出,并为重复出现的子对象生成嵌套的 `$ref`。
推断擅长处理的内容
- 类型:string、number、integer、boolean、null、array、object。
- 可空性:某字段在一个样本中为
null、在另一个样本中为字符串时,会变为["string", "null"]。 - 数组元素:同构数组生成单个
items模式;异构数组生成prefixItems。 - 枚举(enum):若所有观测值都来自一个较小的集合(可配置,默认 10 个不同的值),则输出
enum。 - 必填:存在多个样本时,键的交集成为
required;只有一个样本时,除非你选择不这样做,否则所有键都为必填。 - 格式:与 ISO-8601 日期、电子邮件或 URI 相匹配的字符串会被推断出
format。
推断无法得知的内容
- 意图与示例之别:样本
age: 25会推断出type: integer,但无法得知你是否也接受null。请提供覆盖边界情况的多个样本。 - 约束:
minLength、maximum、pattern,这些需要你手动添加。推断不会从样本中猜测取值范围。 - 业务逻辑:“这三个字段中必须恰好设置一个”需要用
oneOf表达,无法推断。 - 引用:生成器输出扁平的模式。若想把重复的结构抽取到
$defs中,请在生成之后再做。
输出示例
从单个样本:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
推断出的模式(draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
常见错误
- 仅从单个样本推断。 模式会过拟合,每个字段都变为必填,且不容忍 null。请始终提供至少 5 到 10 个多样化的样本。
- 想要
number时却用了integer。 若任一样本含有小数,推断类型会变为number;若全部为整数,则为integer。对于两者皆可的字段,请包含一个含小数的样本。 - 遗漏可选字段。 在 5 个样本中有 4 个包含、1 个缺失的字段会被视为可选,这是有意的。若 5 个样本恰好都包含它,即便它在你的 API 中其实是可选的,模式也会将其标记为必填。
常见问题
样本越多越好,但通常 5 到 10 个多样化的样本即可生成合理的模式。只用一个样本时,每个字段都会变为必填,且无法推断可空性,如有可能,请始终提供多种变体。
默认使用 draft 2020-12。为兼容 OpenAPI 3.0(其使用 draft 05/07 的子集),也提供 draft 07 和 draft 04。
不会。从样本中推断约束会导致模式过拟合。请在生成之后,根据你的业务规则手动添加 minLength、maximum、pattern 等。
可以。若你粘贴一个 JSON 数组,生成器会把每个元素当作独立样本,并生成描述单个元素(而非外层数组)的模式。若想得到外层数组本身的结构,请启用“作为数组容器处理”选项。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
邮箱验证器
验证邮箱地址:RFC 5322 语法检查、实时 MX 记录查询,并显示本地部分、域名和长度详情。不会发送任何邮件。
编辑器配置生成器
根据你的缩进样式与大小、行尾、字符集和空格规则生成 .editorconfig 文件,让不同集成开发环境(IDE)和编辑器的格式保持一致。
证书解码器
粘贴一张 X.509 PEM 证书,并查看解码后的字段:主体、颁发者、序列号、签名算法、有效期及主体备用名称(SAN)。
此工具还提供其他语言版本
- Trình tạo JSON Schema [VI]
- مولّد مخطط JSON [AR]
- Générateur de schéma JSON [FR]
- Generator JSON Schema [ID]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- JSON-schemagenerator [SV]
- JSON-schemagenerator [NL]
- เครื่องมือสร้าง JSON Schema [TH]
- Generator schematów JSON [PL]
- JSONスキーマジェネレーター [JA]
- Gerador de Esquema JSON [PT]
- Generador de Esquema JSON [ES]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]