JSON in JSON Schema umwandeln — Numio
Leitet aus einem JSON-Beispiel ein JSON Schema (draft-07) ab. Bei Arrays von Objekten werden alle Elemente zusammengeführt: Ein Schlüssel, der in einigen Elementen fehlt oder null ist, wird nicht in required aufgenommen.
Aus mitgeschnittenen Beispielen ein erstes Validierungsschema für eine API-Antwort oder einen Webhook-Payload erstellen.
Wann sie hilft
- Aus mitgeschnittenen Beispielen ein erstes Validierungsschema für eine API-Antwort oder einen Webhook-Payload erstellen.
- Ein Schema für Ajv, OpenAPI oder einen weiteren Schritt von JSON Schema nach TypeScript/Zod erzeugen.
Anwendung
- Füge ein JSON-Beispiel in den linken Editor ein oder öffne über die Schaltfläche zum Laden einer Datei eine UTF-8-Datei; ein Array mit mehreren Datensätzen liefert bessere required-Listen.
- Lies das Schema: In einem einzelnen Objekt ist jeder Schlüssel required, Schlüssel, die in einigen Array-Elementen fehlen oder null sind, sind optional.
- Kopiere das Schema und ergänze Einschränkungen, die das Beispiel nicht zeigen kann, etwa Formate, Enums, integer und minimum.
JSON-Beispiel
[
{ "id": 1, "name": "Ada", "email": null },
{ "id": 2, "name": "Lin", "email": "lin@example.com" }
]JSON Schema (draft-07)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Generated schema for Root",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"name": {
"type": "string"
},
"email": {
"type": "string"
}
},
"required": [
"id",
"name"
]
}
}Details und Einschränkungen
Zahlen sind immer "type": "number"; integer, Formate (email, date-time), Enums und Patterns werden nicht abgeleitet. Der Titel ist immer "Generated schema for Root".
Ein Feld, das überall null ist, erhält ein leeres Schema {}. Ein null neben anderen Werten wird als optional behandelt, nicht als Typ null.
Arrays mit gemischten Typen wie [1, "x"] werden zu einem Tupel (items-Liste mit additionalItems: false); ein leeres Array ergibt items: {}.
Wird im Browser von json_typegen, kompiliert zu WebAssembly, erzeugt. Bei ungültigem JSON (auch mit abschließenden Kommas) wird der JSON-Parse-Fehler angezeigt, und ein einzelner Wert wie 42 wird abgelehnt, da er keine Struktur hat.
FAQ
Welchen JSON-Schema-Draft gibt es aus?
Draft-07, deklariert als "$schema": "http://json-schema.org/draft-07/schema#". Es gibt keine Option, 2019-09 oder 2020-12 zu wählen.
Wie werden optionale Felder erkannt?
Nur über Elemente desselben Arrays: Ein Schlüssel, der in einigen Objekten fehlt oder in einigen null ist, wird nicht in required aufgenommen. In einem einzelnen Objekt ist jeder Schlüssel required.
Kann es ein JSON-Array auf oberster Ebene umwandeln?
Ja. Die Wurzel erhält "type": "array", und die Elemente werden wie im Beispiel zu einem items-Schema zusammengeführt.