Перейти к содержимому
ToolMug

Генератор JSON Schema из JSON

Вставьте пример JSON и получите описывающую его JSON Schema — типы, вложенные объекты, элементы массивов и список обязательных ключей. Используйте её как основу для валидации, форм или документации API.

Работает в браузере — введённые данные никуда не загружаются

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

  1. Вставьте пример JSON или нажмите «Загрузить пример».
  2. Задайте заголовок корневой схемы в поле «Имя корневого типа».
  3. Скопируйте или скачайте схему, затем добавьте ограничения — форматы, шаблоны и диапазоны.

Описание параметров

Имя корневого типа
Используется как title схемы.

Примеры

{"id": 1, "email": null} превращается в схему с "id": {"type": "integer"}, "email": {"type": "null"} и обоими ключами в required.

Пример

Две записи пользователей, где только в первой есть email, а manager иногда равен null:

[
  { "id": 1, "name": "Ada", "email": "ada@example.com", "tags": ["admin"], "manager": null },
  { "id": 2, "name": "Grace", "tags": [], "manager": { "id": 1 } }
]

Если имя корневого типа задано как User, то сгенерированная схема выглядит так:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "User",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": { "type": "integer" },
      "name": { "type": "string" },
      "email": { "type": "string" },
      "tags": { "type": "array", "items": { "type": "string" } },
      "manager": {
        "anyOf": [
          { "type": "null" },
          { "type": "object", "properties": { "id": { "type": "integer" } }, "required": ["id"] }
        ]
      }
    },
    "required": ["id", "name", "tags", "manager"]
  }
}

Ключ email не входит в required, потому что во второй записи его нет, а manager допускает либо null, либо объект, поскольку в примере встречаются оба варианта. Чем разнообразнее ваши примеры данных, тем точнее схема, поэтому вставляйте несколько записей, а не одну.

Типичное применение

Проверка входных данных API. Загрузите схему в валидатор, например Ajv (JavaScript) или jsonschema (Python), и отклоняйте запросы, которые ей не соответствуют.

Документирование API. Вставьте свойства в раздел OpenAPI components.schemas как отправную точку.

Автодополнение в редакторе. VS Code и IDE JetBrains могут использовать JSON Schema, чтобы предлагать ключи и подсвечивать ошибки в конфигурационных файлах JSON.

Часто задаваемые вопросы

Какие ключи помечаются как обязательные?

Те, что присутствуют в каждом объекте примера. Если массив содержит объекты с разными ключами, ключи, отсутствующие в некоторых элементах, не попадают в required.

Можно ли использовать схему с OpenAPI?

OpenAPI 3.1 использует JSON Schema 2020-12, поэтому сгенерированная схема подходит для components/schemas. Для OpenAPI 3.0 замените массивы типов вроде ["string", "null"] на nullable true.

Распознаются ли форматы, например email или date-time?

Нет. Инструмент определяет только типы. Добавьте format, pattern, minimum и подобные ключевые слова вручную, где это нужно.

Загружается ли мой JSON на сервер?

Нет. Схема генерируется в вашем браузере, поэтому ответы API с реальными данными остаются на вашем устройстве.

Конфиденциальность

Этот инструмент работает полностью в браузере. Ваши файлы и текст обрабатываются на вашем устройстве и никогда не загружаются на наши серверы.

Похожие инструменты