Генератор JSON Schema

Вставьте JSON слева — схема появится справа по мере ввода.

JSON Schema

Как пользоваться

  1. Вставьте образец JSON-документа слева — объект, массив или одно значение. Схема создаётся на лету, по мере ввода.
  2. Выберите версию схемы (Draft 7 или 2020-12) и переключайте определение форматов строк, добавление примеров значений и обязательность всех свойств.
  3. Скопируйте результат или скачайте его как schema.json. Ничего не загружается: весь документ разбирается в вашем браузере.

Пример

Образец JSON

{
  "id": 42,
  "name": "Ада Лавлейс",
  "email": "ada@example.com",
  "active": true,
  "tags": ["admin", "editor"],
  "profile": { "score": 4.5, "verified": false }
}

JSON Schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "id": { "type": "integer" },
    "name": { "type": "string" },
    "email": { "type": "string", "format": "email" },
    "active": { "type": "boolean" },
    "tags": { "type": "array", "items": { "type": "string" } },
    "profile": {
      "type": "object",
      "properties": {
        "score": { "type": "number" },
        "verified": { "type": "boolean" }
      },
      "required": ["score", "verified"],
      "additionalProperties": false
    }
  },
  "required": ["id", "name", "email", "active", "tags", "profile"],
  "additionalProperties": false
}

Создано по правилам по умолчанию: Draft 7, форматы включены, все свойства обязательны. Строка с email получает подсказку формата; целое остаётся точным, а вложенный profile становится отдельной объектной схемой.

Правила, ограничения и известные проблемы

  • Типы выводятся из образца: object, array, string, integer, number, boolean, null. Элементы массива объединяются — объекты из разных элементов дают объединение ключей, а ключ, которого нет в некоторых элементах, не помечается обязательным.
  • Разные типы внутри одного массива дают anyOf; пустой массив даёт type:array без items (тип элемента по образцу неизвестен).
  • Форматы строк (email, UUID, URI, date, date-time) угадываются по значению — это подсказки, а не проверка всех возможных значений. Отключаются переключателем.
  • Дубликаты ключей сохраняют последнее значение, как JSON.parse. Принимается только строгий JSON (RFC 8259): комментарии, запятые в конце и одинарные кавычки отклоняются с указанием строки и столбца.
  • Схема — это обычный JSON, поэтому её ключевые слова и вывод никогда не зависят от языка страницы. Примеры значений восстанавливаются нативно, поэтому экстремальное целое (например, 12345678901234567890) может округлиться только в примере.
  • Ограничения: 1 000 000 символов и 512 уровней вложенности. При превышении любого лимита выводится ошибка, а не обрезанный результат. Загрузка файла читает только локальный файл — ничего не отправляется.

Что обычно нужно дальше, когда схема получена.