Generator schematów JSON
Wklej jeden lub kilka przykładów JSON, a generator wywnioskuje schemat JSON, którego możesz użyć do walidacji nowych ładunków. Wykrywa typy, oznacza pola jako wymagane, gdy występują w każdym przykładzie, wnioskuje wyliczenia (enum), gdy wartości pochodzą z małego, zamkniętego zbioru, oraz tworzy wynik zgodny ze schematem JSON draft 2020-12.
Jak wygenerować schemat JSON
-
1
Wklej przykładowe dokumenty
Jeden lub kilka rzeczywistych ładunków; im większa różnorodność, tym dokładniejszy wywnioskowany schemat.
-
2
Wybierz draft
draft 2020-12 (obecny), draft 07 (szeroko wspierany) lub draft 04 (dla starszego OpenAPI).
-
3
Dostrój wnioskowanie
Włączanie/wyłączanie wnioskowania enum, strategia pól wymaganych (część wspólna lub suma zbiorów) oraz decyzja, czy oznaczać wszystkie pola jako `required`, gdy podano tylko jedną próbkę.
-
4
Generuj
Schemat jest generowany z `$schema`, `title`, `type`, `properties` oraz zagnieżdżonymi `$ref` dla powtarzających się podobiektów.
Co wnioskowanie robi dobrze
- Typy: string, number, integer, boolean, null, array, object.
- Możliwość wartości null: pole, które w jednej próbce ma wartość
null, a w innej jest ciągiem znaków, staje się["string", "null"]. - Elementy tablicy: tablice jednorodne tworzą pojedynczy schemat
items; tablice niejednorodne tworząprefixItems. - Wyliczenia (enum): jeśli wszystkie zaobserwowane wartości pochodzą z małego zbioru (konfigurowalne, domyślnie 10 różnych wartości), generowany jest
enum. - Wymagane: przy wielu próbkach część wspólna kluczy staje się
required; przy jednej próbce wszystkie klucze są wymagane, chyba że z tego zrezygnujesz. - Formaty: ciągi zgodne z datami ISO-8601, adresami e-mail lub URI otrzymują wywnioskowany
format.
Czego wnioskowanie nie może wiedzieć
- Zamiar a przykład: próbka
age: 25wnioskujetype: integer, ale nie może wiedzieć, że akceptujesz równieżnull. Podaj kilka próbek obejmujących przypadki brzegowe. - Ograniczenia:
minLength,maximum,pattern, musisz dodać je ręcznie. Wnioskowanie nie zgaduje granic na podstawie próbek. - Logika biznesowa: warunek “dokładnie jedno z tych trzech pól musi być ustawione” wymaga
oneOf, nie da się go wywnioskować. - Referencje: generator tworzy płaski schemat. Jeśli chcesz wydzielić powtarzające się struktury do
$defs, zrób to po wygenerowaniu.
Przykładowe wyjście
Z pojedynczej próbki:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
Wywnioskowany schemat (draft 2020-12):
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string" },
"age": { "type": "integer" },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["name", "age", "tags"]
}
Najczęstsze błędy
- Wnioskowanie z jednej próbki. Schemat będzie przeuczony, każde pole staje się wymagane, bez tolerancji dla null. Zawsze podawaj co najmniej 5–10 różnorodnych próbek.
- Użycie
integer, gdy chodziło onumber. Jeśli którakolwiek próbka zawiera liczbę dziesiętną, wywnioskowany typ staje sięnumber; jeśli wszystkie są całkowite, staje sięinteger. Dla pól, które mogą być jednym lub drugim, dołącz próbkę z liczbą dziesiętną. - Pominięcie pól opcjonalnych. Pole obecne w 4 z 5 próbek, ale brakujące w 1, staje się opcjonalne, zgodnie z zamierzeniem. Jeśli wszystkie 5 próbek przypadkiem je zawiera, schemat oznaczy je jako wymagane, mimo że w Twoim API jest ono w rzeczywistości opcjonalne.
Najczęściej zadawane pytania
Im więcej, tym lepiej, ale zwykle 5–10 różnorodnych próbek daje sensowny schemat. Przy jednej próbce każde pole staje się wymagane, a możliwości wartości null nie da się wywnioskować, jeśli to możliwe, zawsze podawaj kilka wariantów.
Domyślnie draft 2020-12. Drafty 07 i 04 są dostępne dla zgodności z OpenAPI 3.0 (które używa podzbioru draftu 05/07).
Nie. Wnioskowanie ograniczeń z próbek prowadziłoby do przeuczenia schematu. Dodaj minLength, maximum, pattern itd. ręcznie po wygenerowaniu, zgodnie z Twoimi regułami biznesowymi.
Tak. Jeśli wkleisz tablicę JSON, generator traktuje każdy element jako osobną próbkę i tworzy schemat opisujący pojedynczy element, a nie zewnętrzną tablicę. Włącz opcję „traktuj jako kontener tablicy”, jeśli chcesz uzyskać kształt samej zewnętrznej tablicy.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator EditorConfig
Wygeneruj plik .editorconfig z własnymi regułami stylu i rozmiaru wcięć, końca linii, kodowania i białych znaków, aby uzyskać spójne formatowanie w różnych IDE i edytorach.
Walidator adresów e-mail
Zweryfikuj adres e-mail: sprawdzenie składni RFC 5322, sprawdzenie rekordu MX w czasie rzeczywistym oraz szczegóły dotyczące części lokalnej, domeny i długości. Żadna wiadomość nie jest wysyłana.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Narzędzie jest dostępne w innych językach
- JSON-schemagenerator [SV]
- مولّد مخطط JSON [AR]
- Générateur de schéma JSON [FR]
- Generator JSON Schema [ID]
- JSON-Schema-Generator [DE]
- JSON 스키마 생성기 [KO]
- JSON-schemagenerator [NL]
- JSONスキーマジェネレーター [JA]
- เครื่องมือสร้าง JSON Schema [TH]
- Generador de Esquema JSON [ES]
- Trình tạo JSON Schema [VI]
- Gerador de Esquema JSON [PT]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]