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
- Wklej swój schemat do pola Schemat JSON (widnieje w nim „Wklej tutaj swój schemat JSON...”).
- Wklej dane do sprawdzenia do pola Dane JSON.
- Odczytaj Wynik. Odświeża się po wklejeniu albo około 300 milisekund po tym, jak przestaniesz pisać, więc niczego nie musisz naciskać.
- 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.
- 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”:
$.id: Musi być liczbą całkowitą, ale jest ciągiem znaków.$.email: Musi pasować do formatu „email”.$.tags: Elementy [0] i [1] są identyczne, a każdy element musi być inny.
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.
- Schemat, który sam ustawia
additionalPropertieslubunevaluatedProperties, zachowuje własny wybór. - Dowolny
{"type":"object"}bezpropertiespozostaje otwarty. - Gałęzie
allOf,anyOfioneOforaz wpisy w$defsnie są blokowane osobno, więc sąsiednie gałęzie mogą deklarować własne właściwości.
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.
$refjest śledzone tylko wewnątrz tego samego schematu. Nic nie jest pobierane, więc odwołanie zdalne, takie jakhttps://example.com/address.json, jest zgłaszane jako odwołanie, którego schemat nie definiuje. Wklej ten schemat do swojego$defsi wskaż na niego$ref.formatjest sprawdzany, a nie pomijany: email, date, date-time, uri, uuid i inne popularne formaty kończą się błędem „Musi pasować do formatu”.- Uszkodzony schemat pokazuje „Sam schemat jest nieprawidłowy” wraz z problemami i ścieżkami wskazującymi miejsca w schemacie, na przykład
"type": "strng". Dane nie są sprawdzane, dopóki schemat nie zostanie poprawiony. Wzorzec, który nie jest poprawnym wyrażeniem regularnym, pokazuje „Nie udało się użyć schematu”.
Limity i prywatność
- Każde pole przyjmuje do 5 000 000 znaków. Powyżej tego wynik prosi o wklejenie mniejszego fragmentu.
- Wypisywanych jest pierwszych 100 błędów; łączna liczba jest zawsze zliczana.
- Tylko JSON: YAML i całe pliki OpenAPI trzeba najpierw przekonwertować. Narzędzie sprawdza dane; nie tworzy schematu z danych i nie poprawia twoich danych.
- Liczby są czytane tak jak w każdym
JSON.parse: liczby całkowite powyżej 9 007 199 254 740 991 tracą dokładność, zanim zostaną sprawdzone. - Twój schemat i dane są sprawdzane w twojej przeglądarce. Nic nie jest wysyłane ani zapisywane.
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
-
Składany stojak na laptopa Amazon BasicsPodnieś ekran na wysokość oczu, gdy przewijasz długą listę błędów.
-
Monitor ultrapanoramiczny Samsung ViewFinity 34"Schemat po lewej, odpowiedź API po prawej, bez przełączania kart.
-
Magnetyczna tablica biurkowa z pisakamiNaszkicuj kontrakt i pola z błędami, zanim ruszysz kod.
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.