JSON Schema 验证器

根据 JSON Schema 验证 JSON 数据。获取包含精确路径的详细错误消息。

1
2
3
JSON Data
JSON Schema

JSON Schema 最佳实践

编写更好的 Schema,捕获更多验证错误。

1

从必填字段开始

先定义 required 数组,然后为每个属性添加类型约束。这可以尽早捕获缺少的字段,并清楚地记录数据契约。

2

使用描述性错误消息

为 Schema 中的每个属性添加 description 字段。当验证失败时,这些描述帮助开发者理解期望的数据。

3

利用 Schema 组合

使用 allOf、anyOf 和 oneOf 从简单的 Schema 组合复杂的 Schema。这促进了重用并保持 Schema 的 DRY 原则。

4

在 CI/CD 流水线中验证

在构建流水线中使用 JSON Schema 验证来捕获无效的配置、测试数据或 API 契约违规。这可以防止生产环境中的运行时错误。

Schema 验证功能

全面的 JSON Schema 验证工具。

Schema 草案支持

支持 JSON Schema 草案 4、6、7、2019-09 和 2020-12 规范。

详细错误报告

获取精确的错误消息,JSON 路径精确指向验证失败的位置。

并排视图

并排查看 JSON 数据和 Schema,便于交叉引用。

什么是 JSON Schema?

JSON Schema 是一种词汇,用于验证 JSON 数据的结构和内容,描述 JSON 文档的预期形态、类型和约束——类似于数据库 Schema 定义表结构。

基本示例

要求包含 "name"(字符串)和 "age"(数字)字段的 Schema:

JSON Schema
{
  "type": "object",
  "required": ["name", "age"],
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "number", "minimum": 0 }
  }
}

有效数据

{ "name": "Alice", "age": 30 }

无效数据

{ "name": 123, "age": -5 }

常用关键字

type

定义期望的类型:string、number、object、array、boolean、null

required

列出对象中必须存在的属性名

properties

为对象的各属性定义 Schema

items

数组元素的 Schema——对每个元素进行验证

enum

将值限制在固定的允许值列表内

pattern

使用正则表达式验证字符串

JSON Schema 验证器常见问题

什么是 JSON Schema?

JSON Schema 是一种用于注释和验证 JSON 文档的词汇。它定义了 JSON 数据应遵循的结构、类型和约束。

支持哪些 Schema 草案?

验证器支持 JSON Schema 草案 4、6、7、2019-09 和 2020-12。草案版本从 $schema 关键字自动检测。

可以验证嵌套对象吗?

可以,验证器完全支持嵌套 Schema,包括 $ref 引用、allOf/anyOf/oneOf 组合器和递归 Schema。

如何在 Schema 中指定必填字段?

在与 properties 同级添加 required 数组,包含必填字段的名称。然后在 properties 下定义类型约束进行验证。

anyOf、oneOf 和 allOf 有什么区别?

allOf 表示数据必须匹配所有列出的 Schema。anyOf 表示必须匹配至少一个。oneOf 表示必须精确匹配一个。

验证器会检查 Schema 本身的错误吗?

是的,Schema 必须是有效的 JSON 并符合 JSON Schema 语法。如果 Schema 有结构问题,验证器将报告 Schema 级别的错误。

可以使用 $ref 引用共享定义吗?

可以,完全支持同一 Schema 文档中的内部 $ref 引用。这允许您在 definitions 或 $defs 部分定义可重用的子 Schema。

相关工具

探索更多 JSON 工具,提升你的工作效率。