什么是 JSON Schema?

JSON Schema 是一种词汇表,允许您注释和验证 JSON 文档。它描述 JSON 数据的结构、约束和文档,支持自动验证和文档生成。

快速了解

全称JSON Schema 规范
创建时间2009 年(首个草案)
规范文档官方规范

工作原理

JSON Schema 为给定应用程序所需的 JSON 数据以及如何与之交互提供了契约。它可以验证数据类型、必需属性、字符串模式、数值范围、数组长度等。JSON Schema 本身用 JSON 编写,易于理解和生成。它支持 $ref 用于可重用定义、allOf/anyOf/oneOf 用于组合,以及 if/then/else 用于条件验证。JSON Schema 广泛用于 API 文档(OpenAPI)、配置验证和表单生成。

主要特点

  • 用 JSON 格式编写
  • 验证数据类型、格式和约束
  • 支持 $ref 用于可重用定义
  • 使用 allOf、anyOf、oneOf 进行组合
  • 使用 if/then/else 进行条件验证
  • 用于 OpenAPI/Swagger 规范

常见用途

  1. API 请求/响应验证
  2. 配置文件验证
  3. 表单生成和验证
  4. 文档生成
  5. 数据交换契约

示例

loading...
Loading code...

常见问题

JSON Schema 有什么用途?

JSON Schema 用于验证 JSON 数据结构、定义 API 契约、生成文档、创建表单和确保数据一致性。它指定哪些属性是必需的、它们的数据类型、格式和约束,使应用程序和 API 能够进行自动化验证。

JSON 和 JSON Schema 有什么区别?

JSON 是用于存储和交换数据的数据格式(如 {"name": "张三"})。JSON Schema 是用 JSON 编写的规范,描述有效的 JSON 数据应该是什么样子。JSON Schema 定义规则;JSON 是遵循这些规则的数据。

如何根据 JSON Schema 验证 JSON?

使用编程语言的 JSON Schema 验证库(如 JavaScript 的 ajv、Python 的 jsonschema、Ruby 的 json-schema)。这些库将您的 schema 和数据作为输入,返回验证结果,包括发现的任何错误。

JSON Schema 有哪些不同的草案版本?

主要版本包括 Draft-04、Draft-06、Draft-07、Draft 2019-09 和 Draft 2020-12。每个版本都添加了功能和改进。Draft 2020-12 是最新版本,引入了 $dynamicRef 和 prefixItems。始终使用 $schema 关键字指定您的 schema 使用哪个版本。

如何使用 $ref 引用另一个 schema?

$ref 允许您引用和重用 schema 定义。使用带有 JSON Pointer 的 $ref(如 "$ref": "#/$defs/address")进行内部引用,或使用 URI 引用外部 schema。这促进了 DRY 原则,使 schema 更易维护和模块化。

相关工具

相关术语

相关文章