Инструмент Tool Kumar
Генератор JSON Schema
Создайте черновик JSON Schema по типичному JSON-документу. Результат описывает структуру примера и служит основой для валидации.
Как пользоваться инструментом
- Вставьте пример документа.
- В режиме «Конвертация» выберите JSON Schema.
- Проверьте выведенные свойства и сохраните схему.
Пример с разбором
Схема сгенерирована по объекту из примера, включая вложенные profile и tags. В этом единственном объекте есть все свойства, поэтому каждое из них помечено как обязательное.
Ввод
{"name":"Ada","age":36,"active":true,"tags":["json","tools"],"profile":{"city":"London"}}Результат
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Root",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer"
},
"active": {
"type": "boolean"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"profile": {
"$ref": "#/$defs/Profile"
}
},
"required": ["name", "age", "active", "tags", "profile"],
"$defs": {
"Profile": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": ["city"]
}
}
}
Как определяются обязательные свойства
Если сгенерировать схему по нескольким записям, в списке required останутся только ключи, которые есть у каждой записи. В этом примере у обоих пользователей есть id и email, а phone есть только у первого, поэтому свойство phone описано в схеме, но не является обязательным.
Input:
[{"id":1,"email":"ada@example.com","phone":"+44 20 7946 0000"},{"id":2,"email":"lin@example.com"}]
Generated schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Root",
"type": "array",
"items": {
"$ref": "#/$defs/RootItem"
},
"$defs": {
"RootItem": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"email": {
"type": "string",
"format": "email"
},
"phone": {
"type": "string"
}
},
"required": ["id", "email"]
}
}
}Параметры и особые случаи
- Вложенные объекты и массивы описываются рекурсивно.
- Свойство попадает в список required, если оно есть у всех объектов в примерах для соответствующей части структуры. Поэтому один полный пример делает все обнаруженные свойства обязательными. В массиве объектов ключ, отсутствующий у части объектов, становится необязательным.
- Если у части объектов значение свойства равно null, в тип свойства добавляется null. Само по себе это не делает свойство необязательным.
- Результат служит основой для доработки. Проверьте список required, добавьте форматы, диапазоны и шаблоны и удалите всё, чего не гарантирует контракт вашего API.
- Эта страница генерирует схему, но не проверяет документ на соответствие схеме. Перед генерацией проверьте синтаксис JSON в инструменте «JSON-валидатор».
Конфиденциальность по умолчанию
Документ остаётся в этом браузере. Tool Kumar разбирает и конвертирует данные, создаёт файлы для скачивания на вашем устройстве, без регистрации и отправки на сервер.
Вопросы об инструменте «Генератор JSON Schema»
- Помечает ли генератор все свойства как обязательные?
- Только те свойства, которые есть у каждого объекта в примерах. Один полный пример делает все его свойства обязательными, а ключ, отсутствующий у части объектов массива, становится необязательным. Перед публикацией схемы сверьте список required с контрактом вашего API.
- Какую версию (draft) он использует?
- В результате указана версия JSON Schema Draft 2020-12 и используются стандартные ключевые слова type и properties.
- Выводит ли он структуру элементов массива?
- Да. Для массивов объектов создаётся схема items на основе наблюдаемой структуры объекта.