JSON-Schema aus Beispieldaten generieren
Diese Funktion liest eine oder mehrere JSON-Beispieldateien und erzeugt daraus ein passendes JSON-Schema mit Datentypen, Pflichtfeldern und einfachen Validierungsregeln. Gedacht für alle, die eine API-Antwort oder eine Konfigurationsdatei dokumentieren oder deren Struktur automatisiert prüfen lassen möchten, ohne das Schema von Hand zu schreiben.
Online ausführen
Führen Sie dies mit Ihrem Konto auf unseren Servern aus. Kostenlose Tools laufen in Ihrem Browser; dieses wird zum oben genannten Preis von Ihrem KIT-Guthaben abgebucht.
Von der Beispieldatei zum Schema
Sie fügen ein oder mehrere Beispiele im JSON-Format ein; die Funktion leitet daraus die Datentypen jedes Feldes ab, erkennt, welche Felder in allen Beispielen vorkommen, und markiert diese als Pflichtfelder. Optionale Felder, die nur in einem Teil der Beispiele auftauchen, werden entsprechend gekennzeichnet, statt fälschlich als verpflichtend eingestuft zu werden. Zusätzlich erkennt die Funktion einfache Muster wie E-Mail-Adressen, Datumswerte im ISO-Format oder URLs und ergänzt dafür passende Formatangaben im Schema, sofern die Beispieldaten dies erkennen lassen.
Verschachtelte Objekte und Arrays
Bei verschachtelten Objekten und Arrays erzeugt die Funktion die passende rekursive Struktur, einschließlich Schema für die einzelnen Elemente eines Arrays. Enthält ein Array Objekte mit unterschiedlicher Struktur, weist das erzeugte Schema auf diese Uneinheitlichkeit hin, statt sie stillschweigend zu vereinheitlichen und dabei Informationen zu verlieren. Auch mehrere Verschachtelungsebenen, etwa ein Array von Objekten, die selbst wieder Arrays enthalten, werden vollständig abgebildet, ohne dass die Tiefe der Struktur von Hand nachgebildet werden muss.
Wofür sich das erzeugte Schema eignet
Das Ergebnis folgt dem Standard JSON Schema (Draft 2020-12) und lässt sich direkt in eine Validierungsbibliothek, eine API-Dokumentation oder einen Editor mit Autovervollständigung einbinden. Für eine rechtsverbindliche oder sicherheitskritische Validierung empfiehlt sich eine manuelle Prüfung des erzeugten Schemas, insbesondere bei Feldern mit besonderen Formatanforderungen wie E-Mail-Adressen oder Datumswerten. In vielen gängigen Programmiersprachen existieren Bibliotheken, die ein solches Schema direkt einlesen und eingehende Daten automatisch dagegen prüfen, ohne dass eigene Validierungslogik geschrieben werden muss.
Preis pro Dokument
Ein erzeugtes Schema kostet $0.003 Grundgebühr plus $0.0135 pro Dokument, insgesamt rund $0.017. Es gibt kein Abonnement: Über die API lässt sich die Funktion in eine Build-Pipeline einbinden, die bei jeder Änderung der API-Antwort automatisch ein aktualisiertes Schema erzeugt. So bleibt das veröffentlichte Schema auch dann aktuell, wenn sich die Struktur der API-Antwort im Laufe der Entwicklung ändert, ohne dass jemand daran denken muss, es von Hand zu pflegen.
Anwendungsfälle
Schema für eine öffentliche API dokumentieren
Die Schneider IT-Systeme GmbH & Co. KG erzeugt aus Beispielantworten ihrer öffentlichen API ein JSON-Schema, das sie in der API-Dokumentation veröffentlicht, damit externe Entwickler die Struktur ohne Rückfragen verstehen.
Validierung für eine Konfigurationsdatei
Ein Entwickler erzeugt aus einer bestehenden Konfigurationsdatei ein Schema, um künftige Änderungen automatisch gegen die erwartete Struktur zu prüfen, bevor eine fehlerhafte Konfiguration in Produktion gelangt.
Autovervollständigung im Editor einrichten
Lukas Fischer hinterlegt das erzeugte Schema in seinem Editor, damit Kolleginnen und Kollegen beim Bearbeiten der JSON-Konfiguration automatisch Vorschläge und Warnungen bei falschen Feldnamen erhalten.
Häufige Fragen
Werden meine Beispieldaten gespeichert?
Nein. Die eingereichten Beispiele werden nur zur Erstellung des Schemas verwendet und danach nicht gespeichert.
Welchem Standard folgt das erzeugte Schema?
JSON Schema, Draft 2020-12. Das Ergebnis lässt sich direkt in gängige Validierungsbibliotheken einbinden.
Was passiert bei Feldern, die nur manchmal vorkommen?
Sie werden im Schema als optional markiert, statt fälschlich als Pflichtfeld eingestuft zu werden.
Wie viele Beispiele sollte ich einreichen?
Mehrere Beispiele verbessern das Ergebnis deutlich, besonders wenn manche Felder optional sind oder Arrays unterschiedlich befüllte Objekte enthalten.
Was kostet ein erzeugtes Schema?
$0.003 Grundgebühr plus $0.0135 pro Dokument, insgesamt rund $0.017.
Brauche ich ein Konto?
Nein. Es gibt derzeit keine Konten – Sie zahlen pro Dokument, direkt über PayPal.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/json-schema-gen \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/dev/json-schema-gen", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/json-schema-gen",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/json-schema-gen", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/json-schema-gen", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"input": "…"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.json_schema_gen",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
422 | task_failed | Die Aufgabe ist fehlgeschlagen und wird nicht berechnet. |