Как пользоваться
- Вставьте пример JSON или нажмите «Загрузить пример».
- Задайте заголовок корневой схемы в поле «Имя корневого типа».
- Скопируйте или скачайте схему, затем добавьте ограничения — форматы, шаблоны и диапазоны.
Описание параметров
- Имя корневого типа
- Используется как 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 с реальными данными остаются на вашем устройстве.
Конфиденциальность
Этот инструмент работает полностью в браузере. Ваши файлы и текст обрабатываются на вашем устройстве и никогда не загружаются на наши серверы.