JSON Schema aus Beispiel-JSON erzeugen
Aus Beispiel-JSON einen JSON-Schema-Entwurf mit type, properties, items und required erzeugen
Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.
Hat dieses Werkzeug geholfen?
Danke, Ihre Rückmeldung ist angekommen.
So funktioniert es
Ein JSON Schema ist eine Regeldatei, die festlegt, welche Felder ein JSON-Dokument haben muss und welche Typen darin stehen; damit prüfen Sie API-Anfragen oder Konfigurationsdateien. Statt bei null anzufangen, fügen Sie ein echtes Beispiel in das linke Feld ein; rechts entsteht ein Schema mit ausgefüllten type, properties, items und required. Im Beispiel bekommt das Objekt "lieferant" einen eigenen properties-Block, das Array "varianten" wird mit items beschrieben. Die Datensätze eines Arrays werden zusammengeführt: "reduziert" steht nur in der zweiten Variante und kommt daher nicht in required, "durchmesser_cm" und "farbe" stehen in beiden und sind Pflicht. 49.95 wird number, 12 integer; ein Feld, das nur null ist, wie "hinweis", bekommt type null. Passt ein String exakt zum Format date-time oder email, wird format ergänzt. Das Ergebnis ist ein Entwurf: erlaubte Werte (enum), Untergrenzen (minimum) oder Muster (pattern) kennen nur Sie und tragen sie selbst nach.
Dieses Werkzeug ist auch als json schema erstellen, json schema aus json generieren, json schema generator, json to json schema, json schema aus beispiel ableiten bekannt.
Was ist JSON Schema?
JSON Schema ist eine Regelsprache, die den Aufbau eines JSON-Dokuments selbst in JSON beschreibt: welche Felder vorhanden sein müssen (properties, required), ihre Typen (type), die Elemente eines Arrays (items) und Wertgrenzen (minimum, pattern, enum). Eine Validator-Bibliothek liest das Schema, vergleicht eingehende Daten damit und meldet jede Abweichung mit ihrem Pfad. OpenAPI-Dokumente und die Autovervollständigung vieler Editoren bauen darauf auf.
Was ist required und null?
In JSON Schema besagt required nur, dass ein Feld im Objekt vorhanden sein muss; über seinen Wert sagt es nichts. Im Datensatz {"hinweis": null} existiert das Feld also und erfüllt required; damit der Wert null durchgeht, muss sein Typ zusätzlich null enthalten. Ein fehlendes Feld und ein Feld mit null sind zwei verschiedene Fälle, die dieses Werkzeug getrennt kennzeichnet.
Was unterscheidet ein JSON Schema von Beispiel-JSON?
Beispiel-JSON ist ein einzelner Datensatz: Es zeigt eine Bestellung, wie sie gerade ist. Ein JSON Schema schreibt die Regel, der jede Bestellung folgen muss: welche Felder Pflicht sind, welchen Typ sie haben, in welchem Bereich sie liegen. Ein aus einem Beispiel abgeleitetes Schema liefert das Gerüst dieser Regel, kennt aber keine Fälle, die das Beispiel nicht zeigt (eine andere Währung, eine leere Liste, einen sehr langen Namen). Deshalb sollte jemand, der die echten Regeln kennt, das Schema prüfen und die Grenzen ergänzen.
So wird das Schema abgeleitet: Zusammenführen, null und gemischte Typen
Das Werkzeug schreibt nur, was es sieht. Alle Datensätze eines Arrays werden zu einem Schema zusammengeführt; ein Feld, das in jedem Datensatz vorkommt, landet in required, eines, das auch nur einmal fehlt, nicht. Ein Feld mit null bleibt Pflicht, bekommt aber null als zusätzlichen Typ: "type": ["string", "null"]. Zeigt ein Feld zwei Typen (einmal Zahl, einmal Text), akzeptiert das Schema beide über anyOf. Treffen ganze und dezimale Zahlen zusammen, ist der gemeinsame Typ number.
Ein leeres Array verrät nichts über seine Elemente, daher steht dort items: {} – jeder Wert ist erlaubt. format für date, date-time oder email wird nur ergänzt, wenn alle Werte des Feldes exakt passen; ein unmöglicher Tag wie 2026-02-30 bekommt kein format. In Draft 2020-12 ist format standardmäßig nur eine Anmerkung; schalten Sie die Formatprüfung im Validator ein (bei Ajv etwa mit ajv-formats).
- {"a": 1} → "a": {"type": "integer"}, "required": ["a"]
- [1, "x"] → "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}
- [] → "items": {}
- {"t": "2026-09-27T10:30:00+02:00"} → "format": "date-time"
Welche Version wählen und wo das Schema einsetzen
Draft 2020-12 ist die aktuelle Version; OpenAPI 3.1, die JSON-Prüfung von VS Code sowie aktuelle Versionen von Ajv und Pythons jsonschema unterstützen sie. Kennt Ihr Werkzeug nur draft-07 (ältere Ajv-Versionen, manche Codegeneratoren), wählen Sie Draft-07. In diesem Werkzeug unterscheiden sich beide Ausgaben nur in der Zeile $schema, denn die verwendeten Schlüsselwörter (type, properties, items, required, anyOf, format) bedeuten in beiden dasselbe.
Nutzen Sie das Schema, um API-Anfragen auf dem Server zu prüfen, einer Konfigurationsdatei im Editor Autovervollständigung und Fehlermarkierungen zu geben oder den Aufbau einer Datendatei im Team zu dokumentieren. Eine leere Liste required ergibt ein lockeres Schema, das fehlende Felder zulässt – passend, wenn Sie nur die Typen prüfen wollen.
Häufige Fragen
Wie erstelle ich ein JSON Schema aus JSON?
Fügen Sie ein Beispiel der zu prüfenden Daten in das linke Feld dieser Seite ein. Rechts erscheint ein Schema mit ausgefüllten type, properties, items und required. Kopieren oder laden Sie es herunter und ergänzen Sie datenspezifische Regeln wie enum, minimum oder pattern selbst.
Welche Felder kommen in die Liste required?
Felder, die in jedem Datensatz des Beispiels vorkommen. Fehlt ein Feld auch nur in einem Datensatz eines Arrays, gilt es als optional. Ein Feld mit dem Wert null bleibt in required, bekommt aber null als Typ dazu. Soll kein Feld Pflicht sein, stellen Sie die Option auf Leer lassen.
Was unterscheidet draft-07 von 2020-12?
2020-12 ist neuer und bringt etwa prefixItems für positionsweise Array-Elemente und $defs. Dieses Werkzeug nutzt nur Schlüsselwörter, die in beiden gleich wirken; die Ausgabe ist bis auf die Zeile $schema identisch. Wählen Sie die Version, die Ihr Validator unterstützt.
Wird mein eingefügtes JSON an einen Server geschickt?
Nein. Das Schema wird vollständig in Ihrem Browser abgeleitet; selbst ein Beispiel mit Kundendaten oder internen Daten verlässt diese Seite nicht. Nach dem Laden funktioniert die Seite auch offline.