~/tools / JSON Schema Validator
JSON Schema Validator — Sprawdź JSON względem JSON Schema
Sprawdź dane JSON względem schematu JSON Schema i zobacz każdy problem wraz ze ścieżką i regułą, która zawiodła. Obsługuje główne słowa kluczowe Draft 2020-12. Przydatne do kontroli ustrukturyzowanych odpowiedzi modeli AI. Nic nie opuszcza twojej przeglądarki.
Dla obsługiwanych słów kluczowych stosuje JSON Schema Draft 2020-12. Czyta $ref tylko wewnątrz tego samego schematu.
Wszystko działa w twojej przeglądarce. Schemat i dane nie są przesyłane.
Schemat JSON Schema opisuje, jak wygląda poprawny JSON: jego typy, wymagane właściwości, dozwolone wartości i zakresy. To narzędzie sprawdza fragment JSON względem schematu i wypisuje każdy problem razem z jego miejscem w danych oraz słowem kluczowym schematu, które zawiodło. API modeli AI potrafią ograniczyć odpowiedź modelu do schematu, ale odpowiedź nadal może mieć błędne wartości, może być odmową albo może zostać ucięta, dlatego warto sprawdzić ją samodzielnie. Słowa kluczowe, których narzędzie nie sprawdza, takie jak format, są wymieniane, gdy twój schemat ich używa, więc pozytywny wynik nigdy nie jest po cichu słabszy, niż wygląda.
Zastosowania
- Sprawdzenie, czy ustrukturyzowana odpowiedź modelu AI pasuje do schematu, który mu podano
- Przetestowanie schematu na kilku poprawnych i niepoprawnych próbkach, zanim trafi do API
- Znalezienie właściwości w dużym dokumencie JSON, która łamie reguły
Jak używać
- Wklej schemat po lewej, a dane JSON po prawej albo wczytaj przykład.
- Odczytaj wynik: pozytywny albo lista problemów ze ścieżką w danych i regułą, która zawiodła.
- Jeśli pojawi się informacja o niesprawdzonych słowach kluczowych, przeczytaj ją.
Co schemat sprawdza, a czego nie
- properties sprawdza tylko właściwości, które są obecne. Właściwość jest obowiązkowa tylko wtedy, gdy jej nazwa znajduje się w required, więc właściwości niewymienionej może brakować.
- additionalProperties dotyczy nazw, które nie pasują ani do properties, ani do patternProperties. Jeśli go pominięto, dodatkowe właściwości są dozwolone.
- integer pasuje do każdej liczby z zerową częścią ułamkową.
- pattern to wyrażenie regularne ECMA-262 i nie jest zakotwiczone: wzorzec b pasuje do ciągu abc. Dodaj ^ i $, gdy ma pasować cały ciąg.
- minLength i maxLength liczą znaki tak, jak definiuje RFC 8259, więc emoji liczy się jako jeden.
- format domyślnie jest adnotacją, a jego sprawdzanie jest opcjonalne. To narzędzie go nie sprawdza i informuje o tym, gdy schemat go używa.
- Nieznane słowa kluczowe są traktowane jako adnotacje, więc literówka, taka jak requierd, jest ignorowana i nie powoduje niepowodzenia schematu.
Tablice: 2020-12 i wcześniejsze wersje robocze
| Wersja robocza | Schematy dla pierwszych elementów | Schemat dla reszty |
|---|---|---|
| 2020-12 | prefixItems | items |
| draft-07 i wcześniejsze | items jako tablica | additionalItems |
To narzędzie czyta obie formy. W 2020-12 items: false zastępuje additionalItems: false.
Co akceptują funkcje ustrukturyzowanych odpowiedzi AI
Każdy dostawca akceptuje tylko podzbiór JSON Schema, a trzej dokumentują to inaczej.
| Dostawca | Co mówi dokumentacja |
|---|---|
| OpenAI | Korzeń musi być obiektem. Każda właściwość musi być wymieniona w required (wartość opcjonalną zapisuje się jako typ, który dopuszcza też null), a każdy obiekt wymaga additionalProperties: false. allOf, not, dependentRequired, dependentSchemas i if/then/else nie są obsługiwane. |
| Anthropic | additionalProperties musi mieć wartość false. Schematy rekurencyjne, minimum, maximum i multipleOf, minLength i maxLength oraz minItems tablicy inne niż 0 lub 1 nie są obsługiwane. Nieobsługiwana funkcja zwraca błąd 400. |
| Google Gemini | Obsługiwany jest tylko podzbiór JSON Schema. minLength, maxLength, minProperties, maxProperties, uniqueItems, contains, minContains i maxContains są usuwane i ignorowane zamiast zgłaszania błędu. |
Schemat, który przechodzi ten walidator, może nadal zostać odrzucony przez funkcję dostawcy albo egzekwowany tylko częściowo. Sprawdź dokumentację dostawcy i samodzielnie waliduj odpowiedź.
Waliduj odpowiedź samodzielnie
- Google mówi, że wynik może pasować do schematu i mimo to być błędny znaczeniowo, i każe walidować wartości w swojej aplikacji.
- Anthropic zauważa, że wartość enum lub const może wrócić różniąca się tylko wielkością liter, bez błędu.
- OpenAI mówi, że odmowa nie musi być zgodna ze schematem oraz że odpowiedź ucięta przez limit maksymalnej liczby tokenów jest niekompletna.
- Anthropic mówi, że odpowiedź ucięta przez max_tokens może nie pasować do schematu. Zanim sparsujesz, sprawdź, dlaczego model się zatrzymał.
Źródła (sprawdzono 2026-10-23): JSON Schema 2020-12: Core / JSON Schema 2020-12: Validation / JSON Schema 2020-12: Release notes / OpenAI: Structured Outputs / Anthropic: Structured outputs / Google AI for Developers: Structured output
FAQ
Którą wersję JSON Schema obsługuje?
Draft 2020-12. Czyta też starsze formy tablic z draft-07, w których items może być tablicą, a additionalItems obejmuje resztę. Przyjmuje $ref do definicji wewnątrz tego samego schematu ($defs lub definitions) i nie pobiera schematów zewnętrznych.
Jakie słowa kluczowe sprawdza?
type, enum, const, ograniczenia liczb i ciągów, pattern, słowa kluczowe tablic (items, prefixItems, minItems, maxItems, uniqueItems, contains), słowa kluczowe obiektów (properties, patternProperties, additionalProperties, required, propertyNames, dependentRequired i inne), allOf, anyOf, oneOf, not oraz if/then/else.
Czego nie sprawdza?
Nie sprawdza format, unevaluatedProperties, unevaluatedItems, $dynamicRef ani contentMediaType. JSON Schema domyślnie traktuje format jako adnotację, a jego sprawdzanie jest opcjonalne. Gdy twój schemat używa któregoś z nich, narzędzie o tym informuje.
Dlaczego literówka w słowie kluczowym nie powoduje błędu?
JSON Schema traktuje nieznane słowa kluczowe jako adnotacje, więc literówka, taka jak requierd, jest ignorowana, a schemat nadal przechodzi. Narzędzie zgłasza błędną wartość znanego słowa kluczowego, na przykład nieistniejący type, ale nie może wiedzieć, że chodziło ci o inne słowo.
Czy schemat, który tu przechodzi, zadziała w ustrukturyzowanych odpowiedziach dostawcy AI?
Niekoniecznie. Każdy dostawca obsługuje tylko podzbiór JSON Schema. OpenAI wymaga, aby każda właściwość była w required, a additionalProperties miało wartość false, Anthropic nie obsługuje ograniczeń długości liczb ani ciągów, a Gemini ignoruje kilka słów kluczowych. Zobacz uwagi o dostawcach pod narzędziem.
Czy moje dane są wysyłane na serwer?
Nie. Zarówno schemat, jak i dane są sprawdzane w twojej przeglądarce.