Walidacja JSON względem JSON Schema (2020-12, 2019-09, draft 7) ze wskazaniem każdego błędu
Działa w przeglądarce. Wpisane dane nie są nigdzie wysyłane. Sprawdzono 16 października 2026.Walidator JSON Schema sprawdza, czy dokument JSON ma kształt opisany przez schemat: właściwe typy, wymagane właściwości, wartości w dozwolonych granicach i brak nieoczekiwanych kluczy. Ten obsługuje drafty 2020-12, 2019-09, 7, 6 i 4, przechodzi 1652 przypadki oficjalnego zestawu testów i wskazuje każdą błędną wartość ścieżką i numerem wiersza.
Ta strona została przetłumaczona maszynowo z angielskiego oryginału. Tłumaczenie nie zostało jeszcze sprawdzone przez człowieka, dlatego wiążąca jest wersja angielska. Przeczytaj angielski oryginał
Wklej schemat do panelu Schemat, a JSON do panelu Dane, lub kliknij Wypróbuj przykład.
Odczytaj wynik: Poprawny albo lista błędów, każdy ze ścieżką wartości i opisem problemu.
Kliknij błąd, aby ustawić kursor na tej wartości w panelu Dane, popraw ją, a lista zaktualizuje się podczas pisania.
Włącz Sprawdzaj formaty, aby testować także e-mail, datę i godzinę, URI i inne popularne formaty.
JSON Schema to standardowy sposób opisywania, jak wygląda poprawny JSON; korzystają z niego OpenAPI, kreatory formularzy, pliki konfiguracyjne i potoki danych. Po wklejeniu schematu i dokumentu wynik aktualizuje się podczas pisania.
Co jest sprawdzane. Każda asercja słownika walidacji: type, enum, const, granice liczbowe i multipleOf, długość ciągu i pattern, długość tablicy, uniqueItems, contains, rozmiar obiektu, required, dependentRequired oraz aplikatory properties, patternProperties, additionalProperties, items, prefixItems, allOf, anyOf, oneOf, not i if/then/else. Odwołania $ref są rozwiązywane przez wskaźniki JSON, $defs, definitions, $id i $anchor wewnątrz schematu.
Który draft. Draft jest odczytywany z $schema, a gdy schemat go nie podaje, przyjmowany jest 2020-12; można go też wybrać ręcznie. Różnice mają znaczenie: w draft 7 items z tablicą sprawdza każdą pozycję, a słowa kluczowe obok $ref są ignorowane; w 2020-12 pozycje przechodzą do prefixItems, a $ref łączy się z sąsiednimi słowami kluczowymi.
Formaty. Od 2019-09 format jest adnotacją, a nie sprawdzeniem. Po włączeniu Sprawdzaj formaty testowane są mimo to email, date-time, date, time, uri, uuid, ipv4, ipv6 i hostname, czego oczekuje większość osób.
Błędy, które da się naprawić. Każdy błąd podaje ścieżkę błędnej wartości, np. /tags/1, jej wiersz w panelu Dane i naruszoną regułę. Po kliknięciu kursor trafia na tę wartość.
Czego nie robi. unevaluatedProperties, unevaluatedItems i $dynamicRef nie są obliczane, a $ref do schematu na innym serwerze nie jest pobierany. Strona informuje o tym za każdym razem, gdy schemat ich używa, zamiast po cichu przepuszczać dane.
Generowanie schematu. Zamiast schematu można wkleić próbkę, a na jej podstawie powstanie schemat wyjściowy gotowy do zaostrzenia.
Walidator jest testowany na oficjalnym JSON-Schema-Test-Suite. Wszystko działa w przeglądarce; nic, co zostanie wklejone, nie jest nigdzie wysyłane.
Wklej schemat do panelu Schemat, a dokument JSON do panelu Dane. Wynik pojawia się od razu: Poprawny albo lista błędów, z których każdy podaje ścieżkę błędnej wartości, np. /items/2/price, i naruszoną regułę, np. minimum 0. Po poprawieniu danych lub schematu lista aktualizuje się podczas pisania.
Do nowych schematów należy używać 2020-12: to aktualna specyfikacja, z której korzysta OpenAPI 3.1. Draft 7 jest nadal powszechny w starszych narzędziach i bibliotekach. Wersję warto zadeklarować w $schema, na przykład https://json-schema.org/draft/2020-12/schema, ponieważ krotki tablic, $ref i dependencies działają w różnych wersjach inaczej.
Ustawienie additionalProperties na false sprawia, że każda właściwość niewymieniona w properties i niepasująca do patternProperties jest błędem. Literówka, np. emial zamiast email, zostaje wtedy wykryta, a nie zignorowana. Właściwości dodane przez allOf w innym podschemacie nie są widoczne, co często zaskakuje; należy wymienić je w tym samym schemacie.
Od 2019-09 słowo kluczowe format jest domyślnie tylko adnotacją, więc walidatory nie muszą go sprawdzać. Tutaj wystarczy włączyć Sprawdzaj formaty, aby testować email, date-time, date, time, uri, uuid, ipv4, ipv6 i hostname. W kodzie biblioteki takie jak Ajv również wymagają osobnego włączenia sprawdzania formatów.
required wymienia konkretne właściwości, które muszą być obecne, np. id i email, a minProperties tylko je liczy: minProperties 2 akceptuje dowolne dwa klucze. Właściwość wymieniona w properties, ale nie w required, jest opcjonalna, a jeśli występuje, nadal musi spełniać swój własny schemat.
Tak. Wystarczy przełączyć na Generuj schemat i wkleić próbkę do panelu Dane: powstaje schemat 2020-12, w którym każda właściwość ma typ, a klucze obecne we wszystkich rekordach są oznaczone jako required. Próbka nie pokazuje granic, formatów ani dozwolonych wartości, więc przed poleganiem na schemacie należy ręcznie dodać minimum, format i enum.
Stawki i przepisy się zmieniają; przed oparciem się na danej liczbie należy sprawdzić źródło.
Nadal coś nie działa? Zapytaj o narzędzie Walidator JSON Schema a odpowiedzieć może każdy, kto zna odpowiedź. Konto nie jest potrzebne.