Jak wygenerować JSON Schema
- Wklej reprezentatywny przykład JSON. Najlepsze wyniki dają tablice z kilkoma elementami, ponieważ ich elementy są scalane w jeden schemat.
- Wybierz wersję schematu (draft 2020-12 lub draft-07) i zdecyduj, czy właściwości mają być wymagane, czy wykrywać formaty i czy blokować dodatkowe właściwości.
- Skopiuj lub pobierz schemat, a następnie dopracuj go ręcznie – na przykład dodaj opisy, wartości enum albo wartości minimalne i maksymalne.
Co generator rozpoznaje w przykładzie
| Przykład JSON | Schemat |
|---|---|
"ada@example.com" | {"type": "string", "format": "email"} |
"2026-05-01T10:00:00Z" | format date-time (także date, time, uri, uuid, ipv4) |
42 / 4.5 | "integer" / "number" |
| klucz obecny w każdym obiekcie | trafia do required |
| klucz, którego brakuje w niektórych elementach tablicy | opcjonalny (nie ma go w required) |
[1, "a", null] | "items": {"type": ["string", "integer", "null"]} |
| obiekty wymieszane z prostymi wartościami | anyOf z osobnym schematem dla każdego rodzaju |
Co to jest JSON Schema?
JSON Schema to słownik do opisywania i walidacji struktury danych JSON: określa, jakie właściwości istnieją, jaki typ ma każda z nich, które są wymagane i jakie wartości są dozwolone. Używa się go w kontraktach API w OpenAPI, w plikach konfiguracyjnych, do generowania formularzy i do walidacji ustrukturyzowanych odpowiedzi modeli AI. Aktualna wersja to 2020-12; draft-07 jest nadal obsługiwany przez wiele starszych narzędzi. Specyfikacja jest opublikowana na stronie json-schema.org.
Jak dopracować wygenerowany schemat
- Dodaj
titleidescription, aby opisać znaczenie każdego pola. - Ogranicz wartości za pomocą
enum,minimum,maximum,maxLengthlubpattern. - Zaznacz Nie zezwalaj na dodatkowe właściwości (
additionalProperties: false), aby odrzucać nieznane klucze. - Waliduj dane za pomocą Ajv w JavaScripcie lub pakietu
jsonschemaw Pythonie.
Najczęściej zadawane pytania
Której wersji JSON Schema używać?
W nowych projektach używaj draft 2020-12 – to aktualna wersja i podstawa OpenAPI 3.1. Wybierz draft-07, jeśli Twój walidator lub inne narzędzia nie obsługują jeszcze wersji 2020-12.
Dlaczego wszystkie moje właściwości są wymagane?
W pojedynczym przykładowym obiekcie występuje każda właściwość, więc wszystkie zostają oznaczone jako wymagane. Użyj tablicy z kilkoma zróżnicowanymi przykładami lub wyłącz opcję Oznacz właściwości jako wymagane.
Czy generator potrafi wykryć wartości enum lub zakresy?
Nie. Jeden przykład nie pokazuje, jakie wartości są ogólnie dozwolone, dlatego enumy, wartości minimalne i maksymalne oraz wzorce trzeba dodać ręcznie.
Jak zwalidować JSON względem schematu?
Użyj biblioteki walidującej, takiej jak Ajv dla JavaScriptu lub jsonschema dla Pythona. Wiele edytorów kodu również waliduje plik JSON względem schematu wskazanego we właściwości $schema.