Was dieses Werkzeug tut
Aus einer JSON-Probe wird ein JSON Schema in Draft 2020-12.
{ "id": 1, "name": "Ada", "address": { "city": "Paris" } }
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" },
"address": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
},
"required": ["id", "name", "address"]
}
Verschachtelte Objekte stehen an Ort und Stelle. Kein $defs-Abschnitt, kein $ref: für eine Probe ist ein eingebettetes Schema dasjenige, das man von oben nach unten liest.
Zwei Schalter, weil beide Antworten vertretbar sind
- Pflichtschlüssel. Standardmäßig an: jeder Schlüssel der Probe wird aufgeführt. Aus: gar kein
required-Array, und ein Dokument ohne einen Schlüssel validiert trotzdem. additionalProperties. Standardmäßig großzügig — ein zusätzlicher Schlüssel geht durch. Streng gesetzt, bekommt jedes Objekt"additionalProperties": false, und ein unerwarteter Schlüssel ist ein Fehler.
Keine der beiden Entscheidungen lässt sich einer Probe entnehmen. Es sind Aussagen über Ihre API und gehören daher Ihnen, statt hier erraten zu werden.
integer und number kommen aus dem Literal
3 ergibt integer; 3.0 und 1e3 ergeben number. JSON hat einen einzigen Zahlentyp, also ist die Schreibweise die einzige Spur dessen, was die Zahl erzeugt hat. Ein Schema, das 10.0 ganzzahlig nennt, weist 10.5 ab — sehr wahrscheinlich den nächsten Datensatz. Genau das tat dieses Werkzeug, bis der Fehler beim Schreiben dieser Seiten gefunden und behoben wurde.
Was die Probe nicht beschreibt
"n": nullergibt{"type": "null"}, ein Schema, das nichts anderes annimmt. Ist das Feld eine nullbare Zeichenkette, lautet die Änderung{"type": ["string", "null"]}.- Ein leeres Array ergibt
{"type": "array"}ohneitems: über nie gesehene Elemente wird nichts behauptet. - Ein gemischtes Array ergibt
anyOfmit genau den vorhandenen Formen. - Kein
format, keinminLength, keinpattern. Eine E-Mail, eine UUID und ein Satz sind hier alle"type": "string"."format": "email"hinzuzufügen wäre ein Raten über Bedeutung statt ein Lesen von Struktur — und das Erste, was Sie von Hand ergänzen, sobald Sie das Feld kennen.
Datenschutz ab Werk
Alles läuft lokal in deinem Browser mit JavaScript. Deine Daten werden nie hochgeladen, wodurch das Tool auch für sensible Inhalte sicher ist und offline funktioniert.