Документация / JSON Schema
Введение
JSON Schema — язык, на котором описывают, какими должны быть данные в формате JSON: какие поля есть у объекта, какого они типа, какие обязательны, в каком диапазоне лежат числа и по какому шаблону строятся строки. Сама схема — тоже JSON-документ. Схемы используют для проверки запросов и ответов API (на них основаны модели данных OpenAPI и AsyncAPI), конфигурационных файлов и сообщений в очередях, а также для генерации форм и документации.
Первая схема
Схема описывает товар в каталоге: у него обязательные идентификатор, название и цена, а метки — необязательный список уникальных строк.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/product.schema.json",
"title": "Товар",
"description": "Товар из каталога интернет-магазина",
"type": "object",
"properties": {
"productId": {
"description": "Уникальный идентификатор товара",
"type": "integer"
},
"name": {
"description": "Название товара",
"type": "string",
"minLength": 1
},
"price": {
"description": "Цена в рублях",
"type": "number",
"exclusiveMinimum": 0
},
"tags": {
"description": "Метки товара",
"type": "array",
"items": { "type": "string" },
"uniqueItems": true
}
},
"required": ["productId", "name", "price"]
}
Документ, который соответствует схеме:
{
"productId": 1,
"name": "Кофемолка",
"price": 3490,
"tags": ["кухня", "техника"]
}
А этот — нет: цена отрицательная, а метки повторяются.
{
"productId": 2,
"name": "Чайник",
"price": -10,
"tags": ["кухня", "кухня"]
}
Как устроена проверка
Схема состоит из ключевых слов — полей вроде type, properties, minimum. Каждое ключевое слово — отдельное
правило, и документ соответствует схеме, только если выполнены все правила. Ключевые слова делятся на:
- утверждения (assertions) — проверки:
type,minLength,required,enum; - аннотации (annotations) — описания, которые не влияют на проверку:
title,description,default,examples; - применители (applicators) — ключевые слова, которые применяют вложенные схемы к частям документа или
комбинируют схемы:
properties,items,allOf,if.
Пустая схема {} разрешает любой JSON. Схема true означает то же самое, а схема false не пропускает ничего —
это удобно, например, чтобы запретить какое-то поле.
В редакторе
Откройте пример в редакторе JSON Schema: слева — код схемы, справа — её структура в виде дерева и форма проверки
документа. Вставьте JSON в поле проверки, и редактор покажет, какие правила нарушены и где. Версию стандарта редактор
определяет по $schema: поддерживаются 2020-12 (и 2019-09) и draft-07.
Разделы документации
- Типы данных —
type, строки, числа, логические значения иnull. - Объекты и Массивы — свойства, обязательные поля, элементы и кортежи.
- Перечисления и константы, Аннотации —
enum,const, описания и значения по умолчанию. - Комбинирование схем и Условия —
allOf,anyOf,oneOf,not,if/then/else. - Структура и ссылки —
$id,$ref,$defs, многофайловые схемы. - Версии и диалекты, Форматы и данные не в JSON —
$schema, словари,format,contentEncoding.
Похожие инструменты
Обновлено: 30 сентября 2026 г.
