ToolActToolAct

JSON Schema Generator

Automatisch standardkonforme JSON Schema-Definitionen aus JSON-Daten generieren

JSON-Eingabe
Zeilen: 1 | Zeichen: 0
JSON Schema-Ausgabe
// JSON Schema wird automatisch generiert
Eigenschaften: 0 | Zeilen: 1

Konfigurationsoptionen

Schema ID
Eindeutige Kennung für das Schema festlegen, typischerweise im URI-Format, verwendet um Schema in großen Systemen zu referenzieren und zu identifizieren
Alle Felder erforderlich
Wenn aktiviert, werden alle Eigenschaften zum required-Array hinzugefügt, was bedeutet dass diese Felder in den Daten vorhanden sein müssen
Standardwerte hinzufügen
Automatisch default-Eigenschaft basierend auf tatsächlichen Werten im Beispiel-JSON generieren, nützlich für Konfigurationsdateien
Feldbeschreibungen hinzufügen
Automatisch description-Feld für jede Eigenschaft hinzufügen, das den Datentyp und die Quelle beschreibt, hilfreich für Dokumentation
Strenger Modus
additionalProperties: false aktivieren um nicht definierte zusätzliche Eigenschaften zu verbieten und strikte Datenstruktur-Konsistenz zu gewährleisten

Was ist JSON Schema?

JSON Schema ist eine Spezifikation zur Beschreibung und Validierung von JSON-Datenstrukturen. Es definiert Regeln für Struktur, Datentypen, Einschränkungen und wird weit verbreitet für API-Validierung, Formularvalidierung, Konfigurationsdatei-Überprüfung verwendet.

Mit JSON Schema können Sie:

  • Datenvalidierung: Überprüfen ob JSON-Daten dem erwarteten Format und Einschränkungen entsprechen
  • Dokumentationsgenerierung: Automatisch API-Dokumentation und Typdefinitionen generieren
  • Code-Intelligenz: Intelligente Vervollständigung und Typprüfung in IDEs erhalten
  • Automatisierte Tests:: Automatische Validierung von Antwortdatenformat in Tests

Dieses Tool unterstützt die JSON Schema Draft-07-Spezifikation und leitet intelligent verschachtelte Objekte, Array-Typen, Enum-Werte und andere komplexe Strukturen ab.

Besonders bei produktiven Daten oder Codebasen sollte das Ergebnis anschließend mit Parser, Tests oder Projektregeln geprüft werden.

Anleitung

So geht's

  1. JSON-Daten in das linke Eingabefeld einfügen oder auf 'Beispiel' klicken, um Beispieldaten zu laden
  2. Optionen konfigurieren: Schema-ID festlegen, auswählen, ob alle Felder erforderlich sein sollen, Standardwerte hinzufügen usw.
  3. Die entsprechende JSON-Schema-Definition wird automatisch auf der rechten Seite erzeugt
  4. Auf 'Kopieren' klicken, um das generierte Schema in die Zwischenablage zu kopieren
  5. Das Schema für API-Validierung, Formularvalidierung oder Konfigurationsdatei-Prüfung verwenden

Hinweise zum Schema

  • Generierte Schemas spiegeln das bereitgestellte Beispiel-JSON wider. Fügen Sie daher repräsentative optionale Felder, Nullwerte, Arrays und Sonderfälle ein, bevor Sie das Ergebnis kopieren.
  • Überprüfen Sie Pflichtfelder sowie Zahlen- und Zeichenketten-Formate manuell – die beispielbasierte Erkennung kann Ihre Geschäftsregeln nicht immer kennen.

Anwendungsfälle

Schemas aus echten API-Antworten entwerfenEine repräsentative JSON-Antwort einfügen und ein Draft-07-Schema generieren lassen, das Objekteigenschaften, Basistypen, verschachtelte Arrays, Standardwerte und Pflichtfelder erfasst. Das gibt Backend- und Frontend-Teams einen konkreten Ausgangspunkt, bevor Sonderfälle manuell verfeinert werden. Ein echtes Beispiel schlägt Raten, da required vs. optional und enum-Zugehörigkeit aus den tatsächlich vorhandenen Daten abgeleitet werden.
Konfigurationsdateien dokumentierenFür interne Konfigurationsbeispiele Standardwerte und Beschreibungen aktivieren, um ein Schema zu erzeugen, das in Editoren und Dokumentationen nützlich ist. Der strenge Modus kann additionalProperties: false hinzufügen, wodurch versehentliche Schlüssel leichter erkannt werden, sobald das Schema in die Validierung eingebunden ist. Das Schema mit einer CI-Prüfung kombinieren, die fehlschlägt, wenn eine Konfigurationsdatei nicht mehr ihrem Vertrag entspricht.
Datenstruktur vor der Validierungsarbeit erkundenDer Generator meldet die Anzahl der Eigenschaften und leitet Arrays aus Beispiel-Elementen ab, sodass die grobe Breite eines Payloads schnell erfasst wird. Besonders praktisch für eine erste Schema-Erstellung, wenn ein Live-Beispiel existiert, aber noch kein formaler Vertrag geschrieben wurde. Sobald die Struktur kartiert ist, kann das Schema einem Typ-Generator für eine stärkere Typisierung übergeben werden.
Abgeleitete Typen mit Nullable- und Required-Hinweisen verfeinernDie Optionen für strenge und Nullable-Werte nutzen, damit das generierte Draft-07-Schema optionale Felder korrekt markiert, anstatt jeden Schlüssel als immer vorhanden anzunehmen. Das resultierende required-Array manuell prüfen, da ein fehlender Beispielwert ein Feld verbergen kann, das auf dem Server tatsächlich Pflicht ist. Nullable-Handling unabhängig von required umschalten, sodass ein Feld, das null erlaubt aber trotzdem erwartet wird, genau modelliert werden kann.
Draft-07 vs. 2020-12 und Enum-Erkennung unterscheidenDieser Generator gibt standardmäßig JSON Schema Draft-07 aus, das nach wie vor am weitesten in Ajv, jsonschema und Formular-Bibliotheken unterstützt wird; neuere Projekte möchten möglicherweise manuell auf 2020-12 upgraden, um if/then/else, prefixItems oder das const-Schlüsselwort zu nutzen. Die Enum-Erkennung ist heuristisch: Wenn ein Stringfeld in der Beispielmenge weniger als etwa 10 verschiedene Werte hat, wird es automatisch zu einem enum, daher sollte ein Feld wie status, das frei bleiben soll, doppelt geprüft werden. Das generierte Draft-07-Schema als Entwurf betrachten und dann mit einem Transformer in 2020-12 konvertieren, wenn die Konsumenten-Bibliothek es unterstützt.

Technisches Prinzip

JSON Schema ist ein deklaratives Vokabular zur Annotation und Validierung von JSON-Dokumenten, definiert über mehrere IETF-Entwürfe (Draft 4 / 6 / 7 / 2019-09 / 2020-12). Der neueste ist Draft 2020-12, der sieben primitive Typen (string, number, integer, boolean, array, object, null), ein offenes Formatvokabular (email, uri, date-time, uuid, ipv4, hostname, ...) und Dutzende von Einschränkungs-Keywords definiert: pattern (Regex), minimum/maximum/exclusiveMinimum/exclusiveMaximum (Zahlenbereich), minLength/maxLength (Stringlänge), minItems/maxItems/uniqueItems (Array-Einschränkungen), required (Pflicht-Array auf Objektebene), additionalProperties (ob zusätzliche Felder erlaubt sind), enum und const (erlaubte Werte) sowie $ref (Wiederverwendung von Subschemas). Die Seite erzeugt standardmäßig Draft-2020-12-Ausgabe, wobei der ältere Draft-07 (nach wie vor der häufigste in Produktions-Schemas) über das Dropdown auswählbar ist. Die Inferenz des Generators ist ein einzelner Durchlauf über das benutzerseitig bereitgestellte JSON, der rekursiv ein Schema-Objekt aufbaut. Die Zuordnung im Kern der Inferenz ist: integer (Number.isInteger und kein Nachkommenteil) -> {type: 'integer'}, float -> {type: 'number'}, string -> {type: 'string'}, boolean -> {type: 'boolean'}, array -> {type: 'array', items: <Rekursion über das erste Element>} oder {type: 'array', prefixItems: [...]} für Tupel in Draft 2020-12, object -> {type: 'object', properties: <Rekursion über jeden Key>}, null -> {type: 'null'}. Für Arrays mit gemischten Elementtypen gibt der Generator eine oneOf-Subschema aus, die jeden beobachteten Typ abdeckt. Für mehrere Beispielelemente vergleicht der Generator diese, um die required-Liste zusammenzustellen: Ein Key ist erforderlich, wenn er in jedem Beispiel vorhanden ist, optional, wenn ein Beispiel ihn weglässt. Muster und Einschränkungen werden abgeleitet, wenn sich die Beispiele häufen: Wenn alle Zahlen in einem Feld im Bereich [1, 100] liegen, gibt der Generator {type: 'integer', minimum: 1, maximum: 100} aus; wenn ein Stringfeld immer eine UUID ist, markiert der Generator es mit format: 'uuid' und gibt ein pattern: '^[0-9a-f]{8}-...'-Regex aus. Die Enum-Heuristik greift, wenn ein Stringfeld über die Beispiele hinweg <= 10 verschiedene Werte annimmt (z. B. role: 'admin' | 'editor' | 'viewer' alles beobachtet), in diesem Fall gibt der Generator ein Enum-Array aus. Tief verschachtelte Objekte und rekursive Strukturen werden in einen $defs-Abschnitt extrahiert (Draft 2020-12; das ältere $definitions ist das Draft-07-Keyword) und per $ref referenziert. Rekursive Strukturen – z. B. ein Baumknoten mit einem 'children'-Feld vom Typ Baumknoten – erhalten einen Stub-$ref, der auf den $defs-Eintrag des Elternknotens zeigt, den der Validator zur Validierungszeit auflöst. Der Generator wählt das richtige Ref-vs.-Inline-Trade-off automatisch: flache Schemas bleiben inline, tiefe werden in Definitionen zerlegt, um die Ausgabe lesbar zu halten. Generierte Schemas sind deterministisch für eine gegebene Eingabe: dieselben JSON-Beispiele erzeugen stets dasselbe Schema, und der Generator ist in reinem JavaScript ohne Remote-Aufrufe implementiert.

  • Typinferenz-Regeln: Integer-Zahlen -> integer, Gleitkomma -> number, Strings -> string, Booleans -> boolean, Arrays -> array + items, Objekte -> object + properties. JSON null -> type: null (Draft 6+) oder type: 'null'-String.
  • Pflichtfeld-Erkennung: Vergleich aller Beispielelemente – Felder, die in jedem Objekt vorhanden sind, werden als erforderlich behandelt und zum required-Array hinzugefügt; fehlende sind optional. Einzelbeispiel-Eingabe lässt required: [] leer, da die Heuristik mindestens zwei Beispiele benötigt.
  • Enum-Inferenz-Heuristik: Wenn ein Feld über die Beispiele hinweg eine kleine endliche Menge verschiedener String-Werte annimmt (Kardinalität <= 10), wird es automatisch als Enum-Einschränkung erkannt. Größere Kardinalitäten bleiben als einfacher String-Typ.
  • Automatisch erkanntes Format: Basierend auf String-Signaturen werden Felder mit Format-Hinweisen wie email, uri, date-time, uuid für Dokumentation und Validierung markiert. Das Format-Keyword ist in Draft 2020-12 informativ – Validator können wählen, ob sie es durchsetzen oder ignorieren.
  • Verschachtelte $ref-Extraktion: Tief verschachtelte Objekte werden in interne $defs extrahiert (Draft-2020-12-Keyword; das ältere $definitions stammt aus Draft 7) und per $ref referenziert, um das Schema nicht zu verbose werden zu lassen. Rekursive Strukturen erhalten einen Stub-$ref, der auf den $defs-Eintrag des Elternknotens zeigt.
  • Einschränkungserweiterung: Neben Basistypen können auch minimum/maximum (Zahlenbereich), minLength/maxLength (Stringlänge), pattern (Regex) und ähnliche Einschränkungen hinzugefügt werden. Der Generator gibt diese aus, wenn sich Eingabebeispiele auf spezifische Werte häufen.
  • Draft-Auswahl: 2020-12 (der neueste) ist der Standard und verwendet $defs; 2019-09 verwendet ebenfalls $defs; Draft-07 verwendet $definitions und ist das, was die meisten vorhandenen Werkzeuge noch ausgeben. Draft 6 führte die Strict-Required-Semantik ein, bei der Pflichtfelder im required-Array des Elternknotens statt als Geschwistereigenschaft aufgelistet werden.
  • Kompositions-Keywords (Draft 2019-09+): allOf (muss allen Subschemas entsprechen), anyOf (mindestens eines), oneOf (genau eines), not (darf nicht entsprechen). Der Generator wählt oneOf, wenn Beispiele in zwei disjunkte Subschemas passen (z. B. integer vs. string).

Beispiele

Einfaches Objekt -> Schema

{"name": "Alice", "age": 25}
->
{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "required": ["name", "age"]
}

Schema mit Array

{"tags": ["js", "ts"]}
->
{
  "type": "object",
  "properties": {
    "tags": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}

Schema mit Enum

{"role": "admin"}
->
{
  "type": "object",
  "properties": {
    "role": { "type": "string", "enum": ["admin", "user", "guest"] }
  }
}

FAQ

Was ist JSON Schema?

JSON Schema (aktuell Draft 2020-12) ist ein Vokabular zur Validierung von JSON-Dokumenten. Es beschreibt die erwartete Form eines Dokuments – welche Felder existieren, ihre Typen, Wertebereiche und Muster – ähnlich wie XML Schema oder TypeScript-Typen. Tools wie Ajv, Hyperjump und die meisten API-Frameworks nutzen es zur Laufzeitvalidierung.

Welchen JSON-Schema-Draft erzeugt der Generator?

Moderne Drafts (typisch 2020-12 oder draft-07). Die Ausgabe beginnt mit $schema zur Versionsangabe, $id wo sinnvoll, type sowie den passenden Schlüsselwörtern für Objekte, Arrays, Strings, Zahlen, Booleans und null. Wechsle den Draft, wenn dein Validator eine bestimmte ältere Version erwartet.

Wie leitet der Generator Typen aus einem JSON-Beispiel ab?

Er durchläuft das Beispiel und erfasst den Typ jeder Eigenschaft. Bei Arrays wird das items-Schema aus einem oder mehreren Elementen abgeleitet (bei unterschiedlichen Elementen als Vereinigung). Für gemischt typisierte Eigenschaften nutzt er oneOf oder anyOf. Das Ergebnis ist ein freizügiges Ausgangsschema; ziehe Einschränkungen (required, minLength, pattern) per Hand fester.

Werden alle Eigenschaften als required markiert?

Konfigurierbar. Standard ist, jede beobachtete Eigenschaft als required zu markieren. Schalte „alle optional“ um, falls dein Beispiel nur ein einzelner Datensatz ist und andere Instanzen Felder legitim weglassen können. Du kannst das required-Array nach der Generierung manuell bearbeiten.

Wie werden verschachtelte Objekte und Arrays behandelt?

Verschachtelte Objekte werden zu verschachtelten properties-Blöcken; Arrays werden zu items-Definitionen. Tiefe Verschachtelung ist kein Problem. Wenn dieselbe Form mehrfach auftritt, kannst du nachträglich mit $defs / $ref refaktorieren – der Generator dedupliziert nicht automatisch.

Was kann der Generator nicht ableiten?

Format-Constraints (date-time, email, uuid), Enum-Werte, Regex-Muster, minimum/maximum, minItems/maxItems und Abhängigkeiten musst du von Hand ergänzen, weil ein einzelnes Beispiel diese nicht zeigt. Nutze das generierte Schema als Skelett und ziehe es dann fester.

Wird mein JSON hochgeladen?

Nein. Die Inferenz läuft lokal. Eingefügtes JSON verlässt deinen Browser nicht.