JSON Schema быстро разрастается: определения в $defs, ссылки, условия. Редактор показывает схему в трёх видах сразу, чтобы видеть результат каждой правки.
Как работать в редакторе
- Откройте песочницу JSON Schema. Для начала можно взять готовый пример: Файл → Пример.
- Пишите схему слева в JSON или YAML. Ошибки синтаксиса и ошибки самой схемы (неизвестный тип, неверный
$ref) подсвечиваются в строках. - Справа переключайтесь между вкладками:
- Структура — дерево полей с типами, обязательностью и ограничениями; ссылки
$refраскрываются по щелчку; - Пример — документ, построенный по схеме: видно, что на самом деле разрешает схема;
- Проверка — вставьте документ JSON или YAML и нажмите Проверить.
- Структура — дерево полей с типами, обязательностью и ограничениями; ссылки

Версии и возможности
- Поддерживаются draft-07 и 2020-12 — версия берётся из
$schema. - Ctrl+клик по
$refпереходит к определению; ссылка на другой файл проекта открывает его. - Пример документа можно скачать: Файл → Скачать → Пример документа (.json).
- Из схемы можно получить XSD: Файл → Преобразовать в → XSD (см. «JSON Schema в XSD»).
Схема из нескольких файлов
Общие определения удобно вынести в отдельный файл, например common.json, и ссылаться на них: "$ref": "../common/common.json#/$defs/Money". Путь разрешается от папки текущего файла по дереву папок проекта, поэтому такие схемы нужно хранить в проекте (в песочнице связанных файлов нет).
Советы
- Ставьте
additionalProperties: falseу объектов, где лишние поля — ошибка: так ловятся опечатки. - Пишите
description— оно видно на вкладке «Структура» и помогает тем, кто будет использовать схему. - Проверяйте схему на нескольких документах: корректном, без обязательного поля и с лишним полем.
Пример: общий тип и ссылка
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"required": ["id", "total"],
"properties": {
"id": {"type": "string", "format": "uuid"},
"total": {"$ref": "#/$defs/Money"}
},
"$defs": {
"Money": {
"type": "object",
"required": ["amount", "currency"],
"properties": {
"amount": {"type": "number", "minimum": 0},
"currency": {"enum": ["RUB", "USD", "EUR"]}
}
}
}
}
На вкладке «Структура» поле total раскроется в amount и currency, на вкладке «Пример» появится документ с "currency": "RUB".
Вопросы и ответы
Можно ли писать схему в YAML? Да: редактор принимает и JSON, и YAML. Для обмена с другими инструментами обычно используют JSON.
Как проверить, что схема сама корректна? Ошибки схемы (неизвестное ключевое слово в неправильном месте, неверный тип, битая ссылка) показываются в строках и в блоке «Ошибки в схеме». Если ошибок нет, схема компилируется и годится для проверки данных.
Как получить из схемы диаграмму? Наглядная структура — на вкладке «Структура». Для XML-мира схему можно перевести в XSD и посмотреть на диаграмме модели (гайд).
