Генератор JSON Schema

Автоматическое создание соответствующих стандартам определений JSON Schema из данных JSON

Ввод JSON
Строк: 1 | Символов: 0
Вывод JSON Schema
// JSON Schema будет сгенерирован автоматически
Свойств: 0 | Строк: 1

Параметры конфигурации

Schema ID
Установить уникальный идентификатор для Schema, обычно в формате URI, используемый для ссылки и идентификации Schema в больших системах
Все поля обязательны
При включении все свойства добавляются в массив required, что означает эти поля должны существовать в данных
Добавить значения по умолчанию
Автоматически генерировать свойство default на основе фактических значений в примере JSON, полезно для конфигурационных файлов
Добавить описания полей
Автоматически добавлять поле description для каждого свойства, описывающее тип данных и источник, полезно для документации
Строгий режим
Включить additionalProperties: false чтобы запретить дополнительные свойства не определённые в Schema, обеспечивая строгую согласованность структуры данных

Что такое JSON Schema?

JSON Schema — это спецификация для описания и проверки структур данных JSON. Она определяет правила для структуры, типов данных, ограничений и широко используется для валидации API, валидации форм, проверки конфигурационных файлов.

С JSON Schema вы можете:

  • Валидация данных: Проверять соответствие JSON данных ожидаемому формату и ограничениям
  • Генерация документации: Автоматически создавать документацию API и определения типов
  • Интеллект кода: Получать умное дополнение и проверку типов в IDE
  • Автоматические тесты: Автоматически проверять формат данных ответа в тестах

Этот инструмент поддерживает спецификацию JSON Schema Draft-07, интеллектуально выводя вложенные объекты, типы массивов, перечисления и другие сложные структуры.

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

  1. Вставьте данные JSON в левое поле ввода или нажмите Пример для загрузки примера данных
  2. Настройте параметры: установите Schema ID, выберите обязательность всех полей, добавьте значения по умолчанию и т.д.
  3. Соответствующее определение JSON Schema автоматически генерируется справа
  4. Нажмите Копировать чтобы скопировать сгенерированный Schema в буфер обмена
  5. Используйте 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 затем используйте этот инструмент.

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