← Все гайды

Редактор JSON Schema онлайн: структура, пример и проверка

· 2 мин чтения

JSON Schema

Как писать и отлаживать JSON Schema в браузере: наглядная структура схемы, автоматический пример документа, проверка данных и ссылки $ref между файлами.

JSON Schema быстро разрастается: определения в $defs, ссылки, условия. Редактор показывает схему в трёх видах сразу, чтобы видеть результат каждой правки.

Как работать в редакторе

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

Версии и возможности

  • Поддерживаются 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 и посмотреть на диаграмме модели (гайд).