Do czego służy
JSON Schema to słownik do opisywania kształtu danych JSON: jakie właściwości musi mieć obiekt, jakiego typu jest każda wartość, dozwolone zakresy i wzorce, długości tablic i wiele więcej. API korzystają z niego w specyfikacjach OpenAPI, edytory — do podpowiedzi w plikach konfiguracyjnych, a back-endy — do odrzucania błędnych żądań.
Ten walidator sprawdza dokument JSON względem schematu i wypisuje każdy znaleziony problem. Każdy błąd pokazuje miejsce w danych (JSON Pointer, np. /tags/1), czytelny komunikat i niespełnione słowo kluczowe schematu, dzięki czemu szybko poprawisz dane lub schemat. Obsługiwane są draft 2020-12, 2019-09, draft-07 i draft-04, w tym $ref, $defs, allOf/anyOf/oneOf, if/then/else, unevaluatedProperties oraz sprawdzanie formatów.
Jak używać
- Wklej dane w pole Dane JSON, a schemat w JSON Schema, albo wgraj plik do każdego z pól. Przykład wczytuje rekord użytkownika z kilkoma celowymi błędami.
- Wynik aktualizuje się w trakcie pisania: zielona etykieta, gdy dane są poprawne, w przeciwnym razie liczba błędów i ich lista.
- Zostaw Wersję na Automatycznie, aby kierować się
$schema, albo wybierz ją ręcznie. Wyłącz Pokaż wszystkie błędy, aby zatrzymać się na pierwszym. - Kopiuj błędy kopiuje listę jako zwykły tekst, np. do zgłoszenia błędu lub przeglądu kodu.
Jeśli któraś strona nie jest poprawnym JSON-em, komunikat wskaże, czy chodzi o dane, czy o schemat, oraz poda wiersz i kolumnę.
Przykład
Z takim schematem:
{
"type": "object",
"required": ["id"],
"properties": {
"id": { "type": "integer" },
"age": { "type": "integer", "minimum": 0 }
}
}
dokument {"age": -1} daje dwa błędy: w (korzeniu) brakuje wymaganej właściwości id; w /age wartość jest mniejsza niż minimum 0.
Wskazówki
Dodaj "additionalProperties": false, aby wyłapać literówki w nazwach właściwości, które inaczej przechodzą niezauważone. Do stałych wartości używaj enum lub const, a do ciągów takich jak kody produktów — pattern. Gdy schemat się rozrośnie, przenieś powtarzające się fragmenty do $defs i odwołuj się do nich przez $ref.
FAQ
› Które wersje JSON Schema są obsługiwane?
Draft 2020-12, 2019-09, draft-07 (obejmuje też draft-06) i draft-04. Przy ustawieniu Wersja: Automatycznie wersja jest odczytywana ze słowa kluczowego $schema; schematy bez $schema traktowane są jako 2020-12.
› Co oznaczają ścieżki przy błędach?
Pierwsza ścieżka to JSON Pointer do błędnej wartości w danych, np. /items/2/price; (korzeń) oznacza cały dokument. Szara linia pokazuje niespełnione słowo kluczowe i jego miejsce w schemacie, np. minimum · #/properties/age/minimum.
› Czy formaty takie jak email i date-time są sprawdzane?
Tak. Walidowane są popularne formaty: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uuid, regex, json-pointer i inne. Nieznane formaty są pomijane, na co pozwala specyfikacja.
› Czy schemat może odwoływać się do innych plików?
Odwołania w obrębie tego samego schematu działają, np. $ref do #/$defs/address. Zewnętrzne adresy URL nie są pobierane, bo nic nie opuszcza przeglądarki; wklej potrzebne definicje do $defs.