Pomoc

Test JSON Schema online: błędy ze ścieżką i powodem

To narzędzie to szybki test JSON Schema: wklejasz schemat i dane JSON i od razu widzisz, czy do siebie pasują. Jeśli nie, przy każdym błędzie dostajesz ścieżkę do wartości, która go wywołała, oraz zrozumiały powód, na przykład $.users[0].email. Obsługiwane są wersje draft-07, 2019-09 i 2020-12, a oba pola zostają na twoim urządzeniu.


Jak przetestować dane ze schematem krok po kroku

  1. Wklej swój schemat do pola Schemat JSON (widnieje w nim „Wklej tutaj swój schemat JSON...”).
  2. Wklej dane do sprawdzenia do pola Dane JSON.
  3. Odczytaj Wynik. Odświeża się po wklejeniu albo około 300 milisekund po tym, jak przestaniesz pisać, więc niczego nie musisz naciskać.
  4. Zielone Poprawne z napisem „Dane JSON są zgodne ze schematem.” oznacza, że dane przechodzą. Czerwone „Niepoprawne: 3 błędy” wypisuje każdy błąd osobno.
  5. Popraw dane (albo schemat), a wynik zmienia się w trakcie edycji.

Dopóki oba pola nie są wypełnione, wynik pokazuje „Wklej schemat i dane JSON, aby je sprawdzić.” Jeśli któreś pole zawiera tekst, który nie jest JSON-em, pojawia się czerwone pole Nieprawidłowy JSON z powodem i napisem „Wiersz X, kolumna Y”, a wynik mówi, które pole poprawić. Jeśli chcesz najpierw uporządkować bałagan w dokumencie, „Formatowanie JSON” pokazuje ten sam wiersz i kolumnę dla uszkodzonego JSON-a.

Jak czytać błędy: ścieżka i powód

Każdy błąd ma dwie części: ścieżkę i powód. Ścieżka zaczyna się od $, czyli korzenia twoich danych, i podąża za nazwami właściwości, oddzielonymi kropkami, oraz pozycjami w tablicy w nawiasach kwadratowych, liczonymi od 0. Przykład: schemat wymaga id jako liczby całkowitej od 1, email w formacie email i niepowtarzalnych tags; dane to {"id":"7","email":"ana@","tags":["a","a"]}. Wynik brzmi „Niepoprawne: 3 błędy”:

Wypisane są wszystkie błędy, nie tylko pierwszy, więc cały dokument poprawisz za jednym razem. Po 100 błędach lista kończy się wierszem w rodzaju „i jeszcze 250 błędów, których nie pokazano”; liczba w nagłówku pozostaje dokładna. Jeśli brakuje wymaganej właściwości (required), błąd pojawia się przy ścieżce obiektu, który powinien ją zawierać, na przykład $.users[0]. Rzadsze słowa kluczowe (not, contains, propertyNames, dependentRequired oraz if/then/else) też mają własne, zrozumiałe powody.

Tryb ścisły: additionalproperties false

Domyślnie schemat dopuszcza dodatkowe właściwości: dane z polem nick, którego schemat nigdy nie wymienia, i tak przechodzą. Włącz Tryb ścisły („Zgłasza błąd, gdy dane zawierają właściwości, których nie ma w schemacie.”), aby wyłapać literówki i pozostałości. Ze schematem z góry i danymi {"id":1,"email":"ana@example.com","nick":"x"} wynik bez tego trybu to „Poprawne”, a z nim „Niepoprawne: 1 błąd” przy $: Nieoczekiwana właściwość „nick”.

Za przełącznikiem narzędzie dodaje unevaluatedProperties: false do schematu głównego i do każdego schematu właściwości lub elementu, który opisuje obiekt, także przez $ref. Twój tekst w polu nigdy nie jest zmieniany.

JSON Schema draft 7, 2019-09 i 2020-12: wersje, $ref i formaty

Narzędzie czyta linię "$schema" twojego schematu i sprawdza dane odpowiednimi regułami: http://json-schema.org/draft-07/schema# jest traktowany jako draft-07, https://json-schema.org/draft/2019-09/schema jako 2019-09, a https://json-schema.org/draft/2020-12/schema jako 2020-12. Bez "$schema" obowiązuje 2020-12, a przy starszej składni, takiej jak tablica w items, 2019-09. Draft-04, draft-06 i każdy inny adres nie są obsługiwane, a wynik podaje adres zadeklarowany w schemacie. Ma to znaczenie, bo niektóre słowa kluczowe zmieniły się między wersjami: prefixItems należy do 2020-12, a definitions stało się $defs w 2019-09. Oba zapisy ścieżki odwołania działają: #/$defs/name i #/definitions/name.

Limity i prywatność


Najczęstsze pytania

Jak przeprowadzić test JSON Schema online?

Wklej schemat do pola „Schemat JSON”, a dane do sprawdzenia do pola „Dane JSON”. Wynik pojawia się od razu po wklejeniu albo około 300 milisekund po tym, jak przestaniesz pisać. Zielone „Poprawne” oznacza, że dane pasują; czerwone „Niepoprawne” wypisuje każdy błąd ze ścieżką i powodem. Nie ma żadnego przycisku do naciskania.

Jakie wersje obsługuje narzędzie: JSON Schema draft 7, 2019-09 czy 2020-12?

Wszystkie trzy. Wersja pochodzi z linii „$schema” w twoim schemacie. Schemat bez „$schema” jest sprawdzany jako 2020-12, a przy starszej składni, jak tablica w items, jako 2019-09. Schematy deklarujące draft-04, draft-06 lub inny adres $schema są zgłaszane jako nieobsługiwane.

Co oznacza ścieżka taka jak $.users[0].email?

To miejsce wartości, która zawiodła. $ to korzeń twoich danych JSON, .users to właściwość users, [0] to pierwszy element tej tablicy (liczenie zaczyna się od 0), a .email to właściwość wewnątrz niego. Ścieżka taka jak $.users[2].address.zip prowadzi do wartości w ten sam sposób, krok po kroku.

Co oznacza błąd JSON Schema required i dlaczego dotyczy obiektu nadrzędnego?

Brakującej właściwości nie ma, więc nie ma na co wskazać. Błąd pojawia się przy ścieżce obiektu, który powinien ją zawierać, na przykład $.users[0], z powodem „Brakuje wymaganej właściwości „email”.” Dodaj właściwość do tego obiektu, a błąd zniknie.

Jak sprawić, by schemat odrzucał dodatkowe właściwości (additionalproperties false)?

Włącz „Tryb ścisły”. Dodaje on unevaluatedProperties: false do schematu głównego i do każdego schematu właściwości lub elementu opisującego obiekt, więc każda właściwość, której schemat nie wymienia, kończy się błędem „Nieoczekiwana właściwość”. Schematy, które same ustawiają additionalProperties lub unevaluatedProperties, zachowują swój wybór.

Czy sprawdzane są formaty takie jak email, date-time, uri i uuid?

Tak. Słowo kluczowe „format” jest sprawdzane, więc adres taki jak ana@ nie przechodzi dla ciągu z „format”: „email” i pokazuje „Musi pasować do formatu „email”.” Obsługiwane są popularne formaty, w tym email, date, date-time, time, uri, uuid, ipv4, ipv6 i hostname.

Czy narzędzie podąży za $ref do innego pliku lub adresu URL?

Tylko wewnątrz tego samego schematu, na przykład #/$defs/name lub #/definitions/name. Nic nie jest pobierane, więc odwołanie takie jak https://example.com/address.json jest zgłaszane jako odwołanie, którego schemat nie definiuje. Skopiuj schemat, do którego się odwołujesz, do swojego $defs i wskaż na niego $ref.

Co oznacza „Sam schemat jest nieprawidłowy”?

Schemat łamie reguły JSON Schema, na przykład przez „type”: „strng” albo „minimum” zapisane jako tekst. Wynik wypisuje problemy ze ścieżkami wskazującymi miejsca w schemacie. Dane nie są sprawdzane, dopóki schemat nie zostanie poprawiony.

Czy mój schemat lub dane JSON są gdzieś wysyłane?

Nie. Schemat i dane są sprawdzane w całości w twojej przeglądarce. Nic nie jest wysyłane ani zapisywane i nie potrzebujesz konta.

Polecane

Pomaga utrzymać narzędzia za darmo. ✨

Zdjęcia poglądowe. Jestem Partnerem Amazon i otrzymuję wynagrodzenie z tytułu określonych zakupów dokonywanych za moim pośrednictwem.