跳转到主要内容
CuteJSON
↑↓ 导航 Enter 选择 Esc 关闭

如何从真实样本生成JSON Schema

发布 1 分钟阅读 作者 Akash Kinkar Pandey

从样本文档生成的模式描述了样本中的内容。它是一个起点,不是从别处下达的规范,此工具围绕这种方式构建,而不是暗示数据实际不支持的更多确定性。

使用JSON Schema生成器

粘贴文档,或多个记录的数组,选择草稿(2020-12或Draft 07),是否检测字符串格式,以及是否标记必需键,然后按生成模式。

给定

[
  {"id": 1, "name": "a", "score": 1},
  {"id": 2, "name": "b", "score": 1.5}
]

两个记录都携带id、name和score,所以三个都出现在required中。id在每个记录中是整数,变为"integer"。score在第二个记录中有小数1.5,所以它的类型是更宽的"number"而不是"integer",因为它确实包含非整数值。

为什么键可能悄悄从required中消失

添加第三个记录{"id": 3, "name"},没有score字段,然后重新生成:score不再是必需的,而id和name保持必需。只有当数组中的每个记录都携带键时,键才被标记为必需。一个记录缺少字段并不能证明该字段在你的整个API中是可选的,但它确实证明模式不能诚实地承诺它总会在那里,所以它变为可选。这是页面上FAQ直接陈述的唯一规则,因为它是最可能让阅读结果的人感到惊讶的细节。

格式检测

字符串格式如日期或电子邮件地址只有在每个记录中该位置的每个字符串都匹配相同模式时才被声明。这防止了一个幸运的值将真正自由文本字段变为看起来像严格日期格式的东西,后者在看到不是实际日期的值时会拒绝真实、有效的数据。

这无法知道什么

生成器只有你粘贴的记录。它看不到你没有粘贴的记录,所以一个在你的样本中碰巧总是正数的字段不会带有minimum返回,除非你自己添加一个,enum-like字段不会变为enum关键字,除非你添加它。将输出视为你的样本证明的形状,并在你知道真实数据更宽松的地方手动扩展。

检查结果

将生成的模式和文档粘贴到JSON Schema验证器中,看看它是否确实接受你期望的文档类型。

返回所有文章