>_toolkitbox

~/tools / JSON Schema Validator

JSON Schema Validator — Проверка JSON по схеме JSON Schema

Проверьте JSON-данные по схеме JSON Schema и посмотрите каждую проблему с путём к ней и правилом, которое не выполнено. Охватывает основные ключевые слова Draft 2020-12. Полезно для проверки структурированного вывода ИИ-модели. Ничего не покидает ваш браузер.

Для поддерживаемых ключевых слов следует JSON Schema Draft 2020-12. Читает $ref только внутри той же схемы.

Всё выполняется в вашем браузере. Схема и данные не загружаются.

Схема JSON Schema описывает, как выглядит корректный JSON: его типы, обязательные свойства, допустимые значения и диапазоны. Инструмент проверяет JSON по схеме и перечисляет каждую проблему с её местом в данных и ключевым словом схемы, которое не выполнено. API ИИ-моделей могут ограничивать ответ модели схемой, но значения в ответе всё равно могут оказаться неверными, ответ может быть отказом или оборваться, поэтому его стоит проверять самостоятельно. Ключевые слова, которые инструмент не проверяет, например format, перечисляются, если ваша схема их использует, так что успешная проверка никогда не окажется молча слабее, чем выглядит.

Когда пригодится

  • Проверить, что структурированный вывод ИИ-модели соответствует заданной вами схеме
  • Протестировать схему на нескольких корректных и некорректных примерах, прежде чем использовать её в API
  • Найти, какое свойство в большом JSON-документе нарушает правила

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

  1. Вставьте схему слева, а JSON-данные справа или загрузите пример.
  2. Прочитайте результат: проверка пройдена либо список проблем с путём в данных и нарушенным правилом.
  3. Если появилось уведомление о непроверенных ключевых словах, прочитайте его.

Что схема проверяет, а что нет

  • properties проверяет только те свойства, которые присутствуют. Свойство обязательно, только если его имя указано в required, поэтому не указанное там свойство может отсутствовать.
  • additionalProperties применяется к именам, которые не совпадают ни с properties, ни с patternProperties. Если это слово опущено, лишние свойства разрешены.
  • integer соответствует любому числу с нулевой дробной частью.
  • pattern — это регулярное выражение ECMA-262, и оно не привязано к границам строки: шаблон b соответствует строке abc. Добавьте ^ и $, если должна совпасть вся строка.
  • minLength и maxLength считают символы так, как их определяет RFC 8259, поэтому эмодзи считается за один.
  • format по умолчанию является аннотацией, а его проверка необязательна. Этот инструмент его не проверяет и сообщает об этом, когда схема его использует.
  • Неизвестные ключевые слова считаются аннотациями, поэтому ключевое слово с опечаткой, например requierd, игнорируется и не приводит к сбою схемы.

Массивы: 2020-12 и более ранние редакции

РедакцияСхемы для первых элементовСхема для остальных
2020-12prefixItemsitems
draft-07 и ранееitems в виде массиваadditionalItems

Этот инструмент читает обе формы. В 2020-12 items: false заменяет additionalItems: false.

Что принимают функции структурированного вывода ИИ

Каждый поставщик принимает лишь подмножество JSON Schema, и все трое описывают его по-разному.

ПоставщикЧто говорит документация
OpenAIКорень должен быть объектом. Каждое свойство должно быть указано в required (необязательное значение записывается как тип, допускающий и null), и каждый объект должен иметь additionalProperties: false. allOf, not, dependentRequired, dependentSchemas и if/then/else не поддерживаются.
AnthropicadditionalProperties должно быть false. Рекурсивные схемы, minimum, maximum и multipleOf, minLength и maxLength, а также minItems массива, отличный от 0 или 1, не поддерживаются. Неподдерживаемая возможность возвращает ошибку 400.
Google GeminiПоддерживается только подмножество JSON Schema. minLength, maxLength, minProperties, maxProperties, uniqueItems, contains, minContains и maxContains отбрасываются и игнорируются, а не вызывают ошибку.

Схема, прошедшая этот валидатор, всё же может быть отклонена функцией поставщика или соблюдаться ею лишь частично. Проверьте документацию поставщика и сами проверяйте ответ.

Проверяйте ответ самостоятельно

  • Google говорит, что вывод может соответствовать схеме и всё же быть неверным по смыслу, и советует проверять значения в вашем приложении.
  • Anthropic отмечает, что значение enum или const может вернуться с отличием только в регистре, без ошибки.
  • OpenAI говорит, что отказ не обязательно следует схеме, а ответ, оборванный из-за ограничения максимального числа токенов, неполон.
  • Anthropic говорит, что ответ, оборванный из-за max_tokens, может не соответствовать схеме. Прежде чем разбирать ответ, выясните, почему модель остановилась.

Источники (проверено 2026-10-23): JSON Schema 2020-12: Core / JSON Schema 2020-12: Validation / JSON Schema 2020-12: Release notes / OpenAI: Structured Outputs / Anthropic: Structured outputs / Google AI for Developers: Structured output

Вопросы

Какой версии JSON Schema он следует?

Draft 2020-12. Он также понимает старые формы массивов из draft-07, где items может быть массивом, а additionalItems описывает остальные элементы. Он принимает $ref на определения внутри той же схемы ($defs или definitions) и не загружает внешние схемы.

Какие ключевые слова он проверяет?

type, enum, const, ограничения для чисел и строк, pattern, ключевые слова массивов (items, prefixItems, minItems, maxItems, uniqueItems, contains), ключевые слова объектов (properties, patternProperties, additionalProperties, required, propertyNames, dependentRequired и другие), allOf, anyOf, oneOf, not и if/then/else.

Чего он не проверяет?

format, unevaluatedProperties, unevaluatedItems, $dynamicRef и contentMediaType не проверяются. По умолчанию JSON Schema считает format аннотацией, а его проверка необязательна. Если ваша схема использует одно из этих слов, инструмент сообщит об этом.

Почему ключевое слово с опечаткой не вызывает ошибку?

JSON Schema считает неизвестные ключевые слова аннотациями, поэтому опечатка вроде requierd игнорируется, и схема всё равно проходит проверку. Инструмент сообщает о неверном значении у известного ему ключевого слова, например о несуществующем type, но не может знать, что вы имели в виду другое слово.

Будет ли схема, которая проходит здесь, работать со структурированным выводом ИИ-сервиса?

Не обязательно. Каждый поставщик поддерживает лишь подмножество JSON Schema. OpenAI требует, чтобы все свойства были в required, а additionalProperties было равно false; Anthropic не поддерживает ограничения длины чисел и строк; Gemini игнорирует ряд ключевых слов. См. заметки о поставщиках под инструментом.

Отправляются ли мои данные на сервер?

Нет. И схема, и данные проверяются в вашем браузере.

Похожие