Генератор JSON Schema
Автоматическое создание соответствующих стандартам определений JSON Schema из данных JSON
// JSON Schema будет сгенерирован автоматическиЧто такое JSON Schema?
JSON Schema — это спецификация для описания и проверки структур данных JSON. Она определяет правила для структуры, типов данных, ограничений и широко используется для валидации API, валидации форм, проверки конфигурационных файлов.
С JSON Schema вы можете:
- Валидация данных: Проверять соответствие JSON данных ожидаемому формату и ограничениям
- Генерация документации: Автоматически создавать документацию API и определения типов
- Интеллект кода: Получать умное дополнение и проверку типов в IDE
- Автоматические тесты: Автоматически проверять формат данных ответа в тестах
Этот инструмент поддерживает спецификацию JSON Schema Draft-07, интеллектуально выводя вложенные объекты, типы массивов, перечисления и другие сложные структуры.
Как использовать
- Вставьте данные JSON в левое поле ввода или нажмите Пример для загрузки примера данных
- Настройте параметры: установите Schema ID, выберите обязательность всех полей, добавьте значения по умолчанию и т.д.
- Соответствующее определение JSON Schema автоматически генерируется справа
- Нажмите Копировать чтобы скопировать сгенерированный Schema в буфер обмена
- Используйте Schema для валидации API, валидации форм или проверки конфигурационных файлов
Примеры
Простая схема объекта
输入 JSON:
{
"name": "张三",
"age": 28,
"isActive": true
}
输出 JSON Schema:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"description": "Object with 3 properties",
"properties": {
"name": {
"type": "string",
"description": "String value"
},
"age": {
"type": "integer",
"description": "Number value"
},
"isActive": {
"type": "boolean",
"description": "Boolean value"
}
},
"required": ["name", "age", "isActive"]
}Вложенные объекты и массивы
输入 JSON:
{
"user": {
"id": 1,
"profile": {
"avatar": "url",
"skills": ["JS", "TS"]
}
}
}
输出 JSON Schema:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"profile": {
"type": "object",
"properties": {
"avatar": { "type": "string" },
"skills": {
"type": "array",
"items": { "type": "string" }
}
}
}
}
}
}
}Пример валидации данных
使用 Ajv 验证数据:
const Ajv = require('ajv');
const ajv = new Ajv();
const schema = { /* 生成的 Schema */ };
const validate = ajv.compile(schema);
const validData = { name: "李四", age: 25, isActive: false };
const invalidData = { name: "王五", age: "三十" };
console.log(validate(validData)); // true
console.log(validate(invalidData)); // false
console.log(validate.errors); // 错误详情Частые вопросы (FAQ)
Q: Каковы распространённые случаи использования JSON Schema?
A: JSON Schema в основном используется для: валидации запросов/ответов API, валидации данных форм, проверки формата конфигурационных файлов, ограничений документов базы данных, валидации данных автоматических тестов, настройки умного дополнения в IDE. Это важный инструмент для спецификации данных в современной веб-разработке.
Q: Какую версию Schema генерирует этот инструмент?
A: Этот инструмент генерирует Schema в соответствии со спецификацией JSON Schema Draft-07, наиболее широко поддерживаемой версией, совместимой с большинством библиотек валидации и инструментальных цепочек.
Q: Как обрабатываются сложные типы массивов?
A: Инструмент автоматически анализирует структуру элементов массива. Если элементы — объекты, генерируется определение items; если типы несовместимы, используется anyOf или oneOf для представления нескольких возможных типов; пустые массивы генерируют пустое определение items.
Q: Что означает поле required?
A: required — это массив строк, перечисляющий имена свойств, которые должны существовать. Если свойство в required, оно не может отсутствовать при валидации. Свойства не в required являются необязательными.
Q: Как использовать сгенерированный Schema в проектах?
A: Используйте библиотеки валидации такие как Ajv, jsonschema для валидации данных. В Node.js: const Ajv = require('ajv'); const validate = new Ajv().compile(schema); const valid = validate(data);. Фронтенд-фреймворки React, Vue имеют компоненты валидации форм поддерживающие JSON Schema.
Q: Что делает additionalProperties: false?
A: Эта настройка запрещает дополнительные свойства не определённые в Schema. Полезно для сценариев требующих строгого контроля структуры данных, предотвращая случайное загрязнение полей, но может вызвать проблемы совместимости если слишком строго.
Q: Можно ли добавить пользовательские правила валидации?
A: Да, вручную редактируйте Schema после генерации чтобы добавить больше ограничений. JSON Schema поддерживает богатые ключевые слова валидации: minimum/maximum (числовой диапазон), minLength/maxLength (длина строки), pattern (regex-совпадение), enum (перечисляемые значения), format (предопределённые форматы такие как email, uri) и т.д.
Q: Как сгенерировать JSON Schema из типов TypeScript?
A: Этот инструмент выводит Schema из данных JSON. Для генерации из типов TypeScript используйте инструменты такие как typescript-json-schema, или сначала создайте пример данных JSON затем используйте этот инструмент.