Utilia

JSON Schema валидатор

Валидирайте JSON документ спрямо JSON Schema във вашия браузър. Всяка грешка е изброена с пътя си в документа, ключовата дума и пътя в схемата.

Как да валидирате JSON спрямо схема

  1. Поставете схемата в JSON Schema и данните си в JSON документ или изберете готов случай от Пример.
  2. Оставете Версия на Автоматично ($schema), за да се използва версията, посочена в $schema на схемата, или задайте принудително draft 4, 7, 2019-09 или 2020-12.
  3. Валидирането се изпълнява, докато пишете; Валидирай го изпълнява отново. Форматирай и двете преотстъпва двата текста.
  4. Прочетете резултата: зелен ред, когато документът е валиден, иначе таблица с грешки.

Съобщенията за грешки идват от библиотеката за валидиране и са на английски. Таблицата с пътищата и ключовите думи е същата на всички езици.

Как се чете таблицата с грешки

Всеки ред е едно нарушено правило:

  • Път в документа е JSON Pointer към стойността, която не е минала проверката. /roles/1 е вторият елемент на roles; (корен) е целият документ.
  • Ключова дума е правилото на схемата, което е нарушено: type, required, minimum, pattern, format, additionalProperties и така нататък.
  • Съобщение обяснява нарушението, например 0 is less than 1.
  • Път в схемата сочи ключовата дума вътре в схемата, например /properties/id/minimum, за да намерите бързо правилото.

Валидирането не спира при първия проблем: всички грешки са изброени. Когато свойство на обект не мине, валидаторът съобщава обобщение („Property “id” does not match schema“), следвано от точната причина. Покажи само най-конкретните грешки скрива тези обобщения; махнете отметката, за да видите цялата верига. Грешките под anyOf и oneOf винаги се пазят заедно с конкретните грешки на всеки клон, защото имат смисъл само заедно.

Какво се поддържа

  • Версии: 4, 6 (валидира се с правилата на draft 7), 7, 2019-09 и 2020-12, включително $defs/definitions, локален $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties и unevaluatedItems.
  • Формати: проверяват се date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer и relative-json-pointer. Непознатите формати се игнорират, както позволява спецификацията.
  • Препратки: $ref може да сочи навсякъде в схемата, включително към $id, който тя декларира. Отдалечени схеми никога не се изтеглят; препратка към друг URL се съобщава като неразрешена.

Този инструмент валидира документи спрямо вашата схема. Не проверява дали самата схема следва метасхемата, но предупреждава за непознати имена на type като "strin" или "int" – честа грешка при писане, която валидаторите иначе игнорират мълчаливо.

Примерите

  • Потребителски профил (2020-12): required, дължини на низове, format: email, enum вътре в items, uniqueItems и additionalProperties: false.
  • Списък с продукти с $ref (draft-07): масив, чиито елементи сочат към #/definitions/product, с pattern за SKU и цена с exclusiveMinimum.
  • Конфигурация с if/then (2019-09): сертификат, задължителен само в режим HTTPS, oneOf между имейл и URI и числови ограничения.

Всеки пример идва с документ с умишлени грешки, за да видите как изглеждат те.

Често задавани въпроси

Качват ли се данните ми?

Не. Схемата и документът се валидират във вашия браузър; нищо не се изпраща към сървър.

Защо `$ref` на схемата ми е „неразрешен“?

Валидаторът познава само схемата, която сте поставили. $ref към друг файл или URL не може да се следва; копирайте препратените дефиниции в $defs и сочете към #/$defs/….

Коя версия да използвам?

Тази, която целите в проекта си, и я декларирайте с $schema. За нови схеми 2020-12 е сегашната версия; OpenAPI 3.1 също я използва.

Защо integer отхвърля 2.0?

Не го отхвърля: JSON Schema третира 2.0 като цяло число, защото стойността му е цяла. 2.5 не минава през "type": "integer".

Работи ли офлайн?

Да. След като страницата се е заредила и сте изпълнили първо валидиране (което зарежда валидатора), не е нужна връзка.