Walidator i generator JSON Schema
Waliduj JSON względem schematu albo wywnioskuj schemat z przykładowych danych
O tym narzędziu
Dwa kierunki tej samej dyscypliny: wklej przykładowy JSON i dostań wywnioskowany z niego schemat draft-07, albo wklej dane razem ze schematem i zobacz każde naruszenie wypisane wraz ze ścieżką JSON. Walidacja działa na Ajv — tym samym silniku, którego używa większość serwisów w Node — więc co przechodzi tutaj, przejdzie i w CI.
Wnioskowanie jest nastawione produkcyjnie: klucze obiektów stają się otypowanymi właściwościami i pozycjami w required, tablice scalają kształty wszystkich swoich elementów, liczby całkowite są odróżniane od zmiennoprzecinkowych, a klucze występujące tylko w części elementów tablicy słusznie zostają poza required. Wynik to punkt wyjścia, który dociskasz formatami, zakresami i wzorcami.
Odpowiedzi API i pliki konfiguracyjne to akurat te dane, których najmniej chcesz na cudzym serwerze. I wnioskowanie, i walidacja działają w całości w Twojej przeglądarce.
Często zadawane pytania
- Który draft JSON Schema jest obsługiwany?
- Wnioskowanie generuje draft-07, najszerzej wspierany draft wśród edytorów i walidatorów. Walidacja przyjmuje draft-07 oraz wcześniejsze drafty, które Ajv rozumie w trybie nierestrykcyjnym; słowa kluczowe z 2019-09/2020-12 przeważnie też działają, bo nieznane słowa kluczowe są ignorowane, a nie traktowane jako błąd krytyczny.
- Co oznacza $ w ścieżkach naruszeń?
- To korzeń dokumentu, w stylu JSONPath: $.age to właściwość age na najwyższym poziomie, a $.items.2.name to pole name trzeciego elementu tablicy. Pusta ścieżka ($) znaczy, że naruszenie dotyczy samego korzenia dokumentu — złego typu albo brakującej wymaganej właściwości.
- Dlaczego wywnioskowany schemat jest bardziej albo mniej restrykcyjny, niż oczekiwałem?
- Opisuje dokładnie tę próbkę, którą podałeś: pola obecne wszędzie stają się wymagane, a dozwolone są wyłącznie zaobserwowane typy. Podaj bardziej zróżnicowaną próbkę (tablicę reprezentatywnych obiektów), żeby dostać ogólniejszy schemat, a potem popraw go ręcznie — wnioskowanie nie zna Twoich intencji.
- Czy walidacja obsługuje format, pattern i inne słowa kluczowe ograniczeń?
- Słowa kluczowe strukturalne (type, required, properties, items, enum, minimum, pattern…) są egzekwowane w pełni. Wartości format w rodzaju „email” czy „date-time” nie są sprawdzane — odzwierciedla to specyfikację JSON Schema, w której format jest domyślnie adnotacją, i pozwala uniknąć fałszywego poczucia bezpieczeństwa.