操作与实例

从样例推断字段类型,明确必填与空值的区别

样例只能说明已经出现的数据,不能覆盖接口允许的所有值。使用多条有代表性的记录,检查可选字段和类型差异,再决定如何采用生成的 Draft 2020-12 Schema。

如何操作

  1. 提供单条记录或多份样例

    粘贴一个 JSON 对象,或用顶层数组放入多份样例。这个外层数组是样例集合,Schema 描述的是其中一条记录;要推断数组字段,请把数组放进对象。

  2. 确认必填与额外字段策略

    默认不会推断必填字段。只有符合接口约定时,才选择“我确认:样例共有字段设为必填”。除非样例已覆盖所有允许的字段,否则应保留“允许样例之外的字段”。

  3. 同时检查 Schema 与字段说明

    生成预览后检查联合类型、required 字段和提醒。字段说明会列出观察到的路径与出现次数,导出前可以选择文档语言。

输入与预期输出

email 可以缺失,也可以显式为 null

界面设置: Schema 名称设为 User;必填字段策略选择“我确认:样例共有字段设为必填”;勾选“允许样例之外的字段”。

输入
[{"id":1,"email":"[email protected]"},{"id":2,"email":null},{"id":3}]
预期输出
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "User",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer"
    },
    "email": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": true
}

id 在三份样例中都出现,因此在当前显式选择的策略下成为必填字段。email 只出现两次,所以可以缺失;其类型同时保留已观察到的 null。看起来像邮箱的字符串不会自动生成 format: email。

边界与检查事项

缺少样例不能推导出限制
空样例列表会生成不限制结构的 Schema 并给出提醒;空数组不能说明元素类型。格式、数值范围和业务规则需要另行确认,不能由少量值可靠推断。
输入结构与推断上限
单独输入 42 这样的标量会被拒绝。输入上限为 1 MiB、1,000 份样例、500 个不同字段路径、48 层和 25,000 个输入节点;这些限制分别生效,并非所有不足 1 MiB 的文档都能处理。

结果解读与常见疑问

必填字段就不能是 null 吗?

不是。required 控制字段是否必须出现,type 控制是否允许 null。一个在每份样例中都存在且值为 null 的字段,可以同时是必填字段并允许 null。

导出的字段说明会包含样例原值吗?

Schema 与字段说明记录类型、路径及出现次数,不会嵌入样例原值。但字段名称和你填写的标题仍会保留,分享前应检查这些内容。