DevToolPal
PL

Walidator JSON Schema

Sprawdź dane JSON względem JSON Schema (2020-12, 2019-09, draft-07 lub draft-04) i zobacz każdy błąd wraz ze ścieżką.

Działa lokalnie, nic nie jest wysyłane

Opcje

Dane JSON

JSON Schema

Wynik walidacji

Tutaj pojawi się wynik

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ć

  1. 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.
  2. Wynik aktualizuje się w trakcie pisania: zielona etykieta, gdy dane są poprawne, w przeciwnym razie liczba błędów i ich lista.
  3. Zostaw Wersję na Automatycznie, aby kierować się $schema, albo wybierz ją ręcznie. Wyłącz Pokaż wszystkie błędy, aby zatrzymać się na pierwszym.
  4. 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.