← Все гайды

Генерация JSON Schema из JSON по примеру

· 2 мин чтения

JSONJSON Schema

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

Писать схему с нуля долго, особенно для большого ответа API. Быстрее получить черновик из реального примера и доработать его: типы и структура будут верными сразу.

Как сгенерировать схему

  1. Откройте пример в редакторе JSON.
  2. Выберите Файл → Преобразовать в → JSON Schema — по примеру.
  3. В окне видно начало результата и замечания. В песочнице нажмите Открыть в песочнице JSON Schema; в аккаунте выберите папку проекта, название и нажмите Создать артефакт.
  4. В редакторе JSON Schema проверьте результат на вкладке Структура и сравните с исходным примером на вкладке Проверка.
Окно преобразования JSON в JSON Schema с предпросмотром
Предпросмотр схемы и замечание о выводе по одному примеру

Что определяется автоматически

  • Типы: string, integer и number, boolean, null, объекты и массивы.
  • Форматы строк: date, date-time, uuid, email, uri — по виду значения.
  • Элементы массива: схемы всех элементов объединяются, поэтому поле, которое есть не у всех объектов, не становится обязательным.
  • Результат — JSON Schema 2020-12 с title по названию документа.

Что нужно доработать вручную

Один пример не знает правил предметной области, поэтому окно всегда предупреждает: схема выведена по примеру. После генерации проверьте:

  • required: в черновике обязательны все поля примера. Уберите те, что на самом деле необязательны.
  • enum для полей с фиксированным набором значений (статусы, коды).
  • Ограничения: minimum, maxLength, pattern.
  • null: если в примере поле было null, тип будет только null — допишите основной тип: ["string", "null"].
  • description у полей — схема становится документацией.

Чем больше разных примеров вы объедините в один массив перед генерацией, тем точнее будет черновик.

Пример

Из примера

{"id": "3f2a9c1e-7b4d-4e8a-9c21-5d6f7a8b9c0d", "createdAt": "2026-10-01T12:30:00+03:00",
 "items": [{"sku": "A-1", "qty": 2}, {"sku": "B-7", "qty": 1, "gift": true}]}

получится схема, в которой id — строка с форматом uuid, createdAt — date-time, items — массив объектов, где sku и qty обязательны, а gift — нет, потому что он есть не у всех элементов.

Вопросы и ответы

Как сгенерировать схему по нескольким примерам? Соберите примеры в один массив [пример1, пример2, …] и сгенерируйте схему — схемы элементов объединятся. Затем возьмите из результата схему элемента (items) как схему документа.

Можно ли сразу получить схему для OpenAPI? Сгенерированная схема — обычная JSON Schema, её можно вставить в components/schemas спецификации OpenAPI 3.1 как есть; для 3.0 уберите $schema и замените типы с null на nullable: true.

Можно ли сгенерировать схему из YAML? Преобразуйте YAML в JSON (гайд) и сгенерируйте схему из результата.