JSON 模式验证器

粘贴一个模式和一个文档,选择草案,验证器便会将文档与您模式中使用的每个关键词进行比对,typerequiredenumoneOf$refif/then/else、自定义 format,并为每处违规生成报告,其中包含指向具体违规位置的 JSONPath 风格指针。

如何根据模式进行验证

  1. 1

    粘贴模式

    JSON 模式草案 04、07 或 2020-12。若存在 `$schema` 关键词,系统将自动选择相应的草案版本。

  2. 2

    粘贴文档

    要验证的 JSON。必须先是有效的 JSON,语法错误会在模式评估之前显示。

  3. 3

    验证

    每处违规都会附带 JSON 指针(`/user/email`)以及失败的关键词(`format`、`required` 等)。

  4. 4

    修复并重新验证

    编辑任意一侧,状态即刻实时更新。

支持的关键词

核心typeenumconstmultipleOfmaximumminimumexclusiveMaximumexclusiveMinimummaxLengthminLengthpatternmaxItemsminItemsuniqueItemsmaxContainsminContainsmaxPropertiesminPropertiesrequireddependentRequired

组合allOfanyOfoneOfnot

应用器propertiespatternPropertiesadditionalPropertiesitemsprefixItemscontainspropertyNames

条件ifthenelsedependentSchemas

引用$ref$defs$id$anchor

格式(启用时会进行验证):date-timedatetimedurationemailhostnameipv4ipv6uriuuidregex

错误输出

FAIL  /user/email        format            "not-an-email" is not a valid "email"
FAIL  /user/age          minimum           -3 is less than the minimum 0
FAIL  /orders/0/total    type              "42" is not of type "number"
FAIL  /                  required          missing required property "shippingAddress"

每条错误都包含失败的路径和关键词,便于您在编辑器中快速定位。

那些真正棘手的草案差异

关键词 草案 04 草案 07 草案 2020-12
id$id id $id $id
exclusiveMaximum 作为布尔值 数字 数字
items 数组语法 items items prefixItems
$ref 是否允许同级关键词

请设置正确的草案;将草案 04 的模式当作 2020-12 来验证,会错误解读 id 及其他一些细微差别。

典型工作流程

  • API 契约测试:部署前,将生成或更新后的 OpenAPI 模式与真实的示例响应进行比对验证。
  • 配置加固:合并前,在 CI 中将每个 YAML/JSON 配置与模式进行验证。
  • 数据摄入:尽早拒绝与预期结构不符的载荷,并给出清晰的错误提示。

常见错误

  • 忘记强制执行 format 默认情况下,大多数验证器将未知格式仅视为注释。请启用严格格式验证,以真正拒绝无效的电子邮件和日期。
  • 过度使用 oneOfoneOf 的两个分支存在重叠,文档将无法通过验证(必须恰好匹配其中一个)。请使用 anyOf 或判别器模式。
  • 使用 additionalProperties: false 的严格模式。 添加新的可选字段会变成破坏性变更。除非您确实需要一个封闭对象,否则请勿设置它。

常见问题

支持。草案 2020-12、07 和 04 均受支持。验证器会从您的文档中读取 $schema 关键词以选择正确的版本,若无法识别则回退到界面中的选择器。

启用严格格式验证时,标准格式(emaildate-timeuuidipv4 等)会得到验证。您在模式中声明的自定义格式默认仅作为注释处理,除非您为其提供带 pattern 的正则表达式。

内部引用(#/$defs/foo)会自动解析。出于安全考虑,外部 HTTP 引用默认不会被获取。请先将外部引用内联,或使用支持远程 $ref 解析的专用工具。

是的。模式和文档都保留在本地。粘贴的内容绝不会上传,非常适合内部 API 契约和敏感数据。

相关工具

此工具还提供其他语言版本