DEV Community на русском
Подписаться
Я создал валидатор JSON Schema только для браузера — Draft-07, $ref, allOf/anyOf/oneOf, if/then/else, 173 теста
Разработан новый браузерный инструмент без зависимостей для проверки спецификаций JSON Schema Draft-07 с нуля. Этот инструмент предназначен для быстрой проверки схем, отладки и обучения без необходимости настройки проекта Node.js. Он реализует полный набор ключевых слов Draft-07, включая систему типов, перечисления, строки, числа, массивы, объекты, комбинирование, условные выражения и ссылки. Валидатор также поддерживает распространенные форматы, такие как email, URI, date и UUID. Каждая ошибка валидации содержит JSON-путь к ошибочному значению, понятное сообщение и значок ключевого слова, указывающий на конкретное правило, которое не было соблюдено.Архитектура инструмента основана на одной рекурсивной функции, которая проверяет данные по схеме. Приоритет отдается проверке типов, с ранним выходом, если тип данных не соответствует ожидаемому типу схемы. Валидатор также обеспечивает совместимость со старыми версиями Draft-04 для ключевых слов exclusiveMinimum и exclusiveMaximum. Локальные разрешения $ref управляются путем обхода пути JSON Pointer внутри корневой схемы, при этом ключевые слова $ref прерывают выполнение всех остальных соседних ключевых слов в соответствии со спецификацией.Условная валидация с использованием if/then/else, ключевая особенность Draft-07, реализована для обеспечения более динамичных правил схемы. Инструмент включает более 170 тестов, охватывающих все реализованные функции и ключевые слова, обеспечивая точность и надежность. Пользовательский интерфейс имеет разделенную компоновку для JSON и схемы, с результатами, отображаемыми ниже. Ошибки парсинга отображаются немедленно для каждой панели. Карточки ошибок разработаны так, чтобы быть информативными, отражая форматирование популярных библиотек, таких как ajv. Для облегчения немедленного изучения доступны три встроенных примера. Инструмент доступен онлайн по адресу json-schema-validator-dev.pages.dev и является частью растущей коллекции инструментов для разработчиков, работающих исключительно в браузере.