JSON-Schema-Generator
Fügen Sie ein oder mehrere JSON-Beispiele ein, und der Generator leitet ein JSON-Schema ab, das Sie zur Validierung neuer Payloads verwenden können. Erkennt Typen, markiert Felder als erforderlich, wenn sie in jedem Beispiel erscheinen, leitet Enums ab, wenn Werte aus einer kleinen geschlossenen Menge stammen, und erzeugt Ausgaben, die dem JSON-Schema-Entwurf 2020-12 entsprechen.
So generieren Sie ein JSON-Schema
-
1
Beispieldokumente einfügen
Ein oder mehrere echte Payloads, je mehr Vielfalt, desto genauer das abgeleitete Schema.
-
2
Wählen Sie den Entwurf
Entwurf 2020-12 (aktuell), Entwurf 07 (weit verbreitet) oder Entwurf 04 (veraltet für OpenAPI).
-
3
Inferenz anpassen
Enum-Inferenz umschalten, Strategie für erforderliche Felder (Schnittmenge vs. Vereinigung) und ob alle Felder als `erforderlich` markiert werden sollen, wenn nur ein Beispiel gegeben ist.
-
4
Generieren
Das Schema wird mit `$schema`, `title`, `type`, `properties` und verschachtelten `$ref`s für wiederholte Unterobjekte ausgegeben.
Was die Inferenz gut macht
- Typen: string, number, integer, boolean, null, array, object.
- Nullbarkeit: Ein Feld, das in einem Beispiel
nullund in einem anderen einen String hat, wird zu["string", "null"]. - Array-Elemente: Homogene Arrays erzeugen ein einzelnes
items-Schema; heterogene Arrays erzeugenprefixItems. - Aufzählungen (enum): Wenn alle beobachteten Werte aus einer kleinen Menge stammen (konfigurierbar, standardmäßig 10 verschiedene Werte), wird ein
enumausgegeben. - Erforderlich: Bei mehreren Beispielen wird die Schnittmenge der Schlüssel zu
required; bei einem Beispiel sind alle Schlüssel erforderlich, es sei denn, Sie entscheiden sich dagegen. - Formate: Strings, die ISO-8601-Daten, E-Mails oder URIs entsprechen, erhalten ein abgeleitetes
format.
Was die Inferenz nicht wissen kann
- Absicht vs. Beispiel: Ein Beispiel
age: 25leitettype: integerab, kann aber nicht wissen, dass Sie auchnullakzeptieren. Geben Sie mehrere Beispiele an, die Randfälle abdecken. - Einschränkungen:
minLength,maximum,pattern, diese müssen Sie manuell hinzufügen. Die Inferenz rät keine Grenzen aus Beispielen. - Geschäftslogik: “Genau eines dieser drei Felder muss gesetzt sein” erfordert
oneOf, nicht ableitbar. - Referenzen: Der Generator gibt ein flaches Schema aus. Wenn Sie wiederholte Formen in
$defsauslagern möchten, tun Sie dies nach der Generierung.
Beispielausgabe
Von einem einzelnen Beispiel:
{ "name": "Alice", "age": 30, "tags": ["admin", "user"] }
Das abgeleitete Schema (Entwurf 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"]
}
Häufige Fehler
- Ableiten aus einem Beispiel. Das Schema wird überangepasst, jedes Feld wird erforderlich, keine Nulltoleranz. Geben Sie immer mindestens 5-10 verschiedene Beispiele an.
- Verwendung von
integer, wenn Sienumbermeinten. Wenn ein Beispiel eine Dezimalzahl hat, wird der abgeleitete Typnumber; wenn alle ganzzahlig sind, wird erinteger. Für Felder, die beides sein könnten, fügen Sie ein Dezimalbeispiel hinzu. - Vergessen von optionalen Feldern. Ein Feld, das in 4 von 5 Beispielen vorhanden, aber in 1 Beispiel fehlt, wird optional, beabsichtigt. Wenn alle 5 Beispiele es zufällig enthalten, wird das Schema es als erforderlich markieren, obwohl es in Ihrer API tatsächlich optional ist.
Häufig gestellte Fragen
Je mehr, desto besser, aber 5-10 verschiedene Beispiele erzeugen typischerweise ein vernünftiges Schema. Bei einem Beispiel wird jedes Feld erforderlich, und die Nullbarkeit kann nicht abgeleitet werden, geben Sie immer mehrere Varianten an, wenn Sie können.
Entwurf 2020-12 standardmäßig. Entwurf 07 und 04 sind für die Kompatibilität mit OpenAPI 3.0 verfügbar (das einen Entwurf 05/07-Teilmenge verwendet).
Nein. Sinnvolle Einschränkungen aus Beispielen abzuleiten, würde das Schema überanpassen. Fügen Sie minLength, maximum, pattern usw. manuell nach der Generierung basierend auf Ihren Geschäftsregeln hinzu.
Ja. Wenn Sie ein JSON-Array einfügen, behandelt der Generator jedes Element als separates Beispiel und erzeugt ein Schema, das ein einzelnes Element beschreibt, nicht das äußere Array. Schalten Sie “als Array-Container behandeln” um, wenn Sie die Form des äußeren Arrays stattdessen möchten.
Verwandte Tools
ASCII-Tabelle Referenz
Vollständige ASCII-Tabelle von 0 bis 127 mit Dezimal-, Hex-, Oktal-, Binär- und numerischer HTML-Zeichenreferenz für jedes Zeichen, einschließlich Steuerzeichen wie NUL, LF und DEL.
HTML-Zeichenreferenz
Durchsuchbare Liste von HTML-Entitäten, ihren benannten und numerischen Codes sowie eine Ein-Klick-Kopie für Sonderzeichen und Symbole.
Farbrad-Explorer
Erforschen Sie das Farbrad interaktiv. Rotieren Sie Harmonien, vergleichen Sie HSL mit RYB, erkennen Sie komplementäre und triadische Paare in Echtzeit.
Referenz für Tastenkombinationen
Durchsuchen Sie dokumentierte Standardkürzel für VS Code, Chrome und Bash mit GNU Readline unter macOS, Windows und Linux.
Zufallsbuchstaben-Generator
Erzeugen Sie zufällige A-Z-Buchstaben. Wählen Sie Anzahl, Großschreibung, Kleinschreibung oder gemischte Schreibweise für Spiele, Aufgaben und Unterricht.
HTML-Formatter
Formatieren Sie HTML lokal im Browser mit zwei oder vier Leerzeichen Einrückung. HTML wird weder hochgeladen noch validiert.
Tool in anderen Sprachen verfügbar
- Générateur de schéma JSON [FR]
- JSON-schemagenerator [SV]
- เครื่องมือสร้าง JSON Schema [TH]
- مولّد مخطط JSON [AR]
- Generator JSON Schema [ID]
- Trình tạo JSON Schema [VI]
- JSON 스키마 생성기 [KO]
- Generador de Esquema JSON [ES]
- JSON-schemagenerator [NL]
- Generator schematów JSON [PL]
- JSONスキーマジェネレーター [JA]
- Gerador de Esquema JSON [PT]
- Генератор JSON-схем [RU]
- JSON Şema Oluşturucu [TR]
- JSON 模式生成器 [ZH]
- JSON Schema Generator [EN]
- Generatore di JSON Schema [IT]