Генератор JSON Schema
Работает локально в браузереВыводит JSON Schema Draft 2020-12 из образца JSON
Образец JSON
Что делает генератор JSON Schema
Он читает пример JSON и создаёт документ JSON Schema Draft 2020-12 с URI "$schema" https://json-schema.org/draft/2020-12/schema. Вложенные объекты превращаются во вложенные properties, массивы получают схему items, целые числа получают тип integer, остальные числа — number, а поля, допускающие null, используют список типов вроде ["string", "null"]. Если объект или массив встречается в одной позиции с другими типами, схема использует anyOf с отдельной веткой для каждого типа, поэтому смешанные массивы не ломают генерацию.
Как пользоваться
- 1.Вставьте образец JSON, загрузите или перетащите один файл .json либо загрузите пример. Точнее всего результат для массива из нескольких записей.
- 2.Схема обновляется по мере ввода; данные больше 2 МБ ждут нажатия «Создать схему».
- 3.При желании задайте заголовок и выберите «Определять форматы», «Добавлять примеры», «Выводить обязательные поля» и «Выводить enum».
- 4.Прочитайте заметки о необязательных полях, полях только с null, смешанных типах и enum.
- 5.Выберите «Проверить образец», затем скопируйте схему или скачайте schema.json.
Как работают параметры
Обязательными считаются ключи, которые есть в каждом объекте в данной позиции, поэтому в массиве записей ключ, которого нет хотя бы в одной записи, остаётся необязательным. По одному объекту нельзя понять, какие ключи необязательны, и инструмент об этом предупреждает. Форматы (email, uri, date-time, date, time, uuid, ipv4) добавляются только тогда, когда все строки в позиции точно соответствуют одному формату; при выключенном определении ключевых слов format нет вовсе. Enum по умолчанию выключены и выводятся только для повторяющегося текста с небольшим числом вариантов, не похожего на ID, значение с форматом или свободный текст; в них всегда входят все значения образца.
Проверка, ограничения и конфиденциальность
«Проверить образец» компилирует схему в Ajv в строгом режиме Draft 2020-12 вместе с ajv-formats и проверяет образец, показывая JSON Pointer и правило для каждой ошибки. Схема, выведенная из примеров, описывает только то, что есть в образце: объекты остаются открытыми для дополнительных ключей, а диапазоны, шаблоны и длины значений не угадываются. Числа за пределами точности JavaScript получают правильный тип, но не попадают в примеры. Всё выполняется в браузере, а валидатор загружается только по запросу.
