Zum Inhalt springen

JSON in JSON Schema

JSON to JSON Schema

Leitet aus einem oder mehreren Beispielen ein JSON Schema ab und vereinigt die gesehenen Formen.

Beschreibt ein Beispieldokument als JSON Schema (2020-12): Typen, Properties, `required` und verschachtelte `$defs` für wiederkehrende Formen. Nützlich für einen Vertragstest, eine OpenAPI-Komponente oder überall dort, wo ein Validator ein Schema statt eines Beispiels will.

🔒 Läuft vollständig in Ihrem Browserjson-schemajsoncodegenvalidation
Ausgeben als

Beispiel-JSON

Eine .json-Datei ablegen

Wird in diesem Tab gelesen. Nichts wird hochgeladen.

Geben Sie ihm jedes Element, das Sie haben. Jeder weitere Datensatz engt die Vermutung ein – ein Feld, das in einem davon fehlt, ist genau das, was es optional macht.

TypeScript

So funktioniert es

  1. Fügen Sie so viele Datensätze ein, wie Sie haben

    Jedes Element jedes Arrays wird gelesen und zusammengeführt, nicht nur das erste. Drei Datensätze sagen weit mehr als einer, denn ein Feld, das in einem davon fehlt, ist genau das, was dieses Feld optional macht.

  2. Benennen Sie den Wurzeltyp

    Verschachtelte Objekte werden nach dem Schlüssel benannt, der sie enthält, bei Arrays in die Einzahl gesetzt, sodass `users` ein `User` ergibt. Nur die Wurzel braucht einen Namen von Ihnen.

  3. Lesen Sie die Zähler unter der Ausgabe

    Typen, optionale Felder, Unions und wie viele Datensätze zusammengeführt wurden. Ein Union-Zähler über null bedeutet, dass ein Feld in Ihrer Stichprobe zwei verschiedene Arten von Wert hatte – einen Blick wert, bevor Sie das Ergebnis in eine Codebasis einfügen.

  4. Bringen Sie das Schema zu einem Validator

    Die Ausgabe trägt ihr `$schema`-Schlüsselwort, sodass sie direkt in den JSON-Schema-Validator auf dieser Website oder in jede 2020-12-Implementierung gehen kann.

Häufige Fragen

Welcher Draft ist das?

Draft 2020-12, deklariert im `$schema`-Schlüsselwort. Wiederverwendbare Formen stehen in `$defs` und werden mit `$ref` referenziert, was die Schreibweise dieses Drafts ist; Draft-07-Werkzeuge wollen stattdessen `definitions` und lösen diese Referenzen nicht auf.

Warum ist nichts über den Typ hinaus eingeschränkt?

Es wird kein `format`, `minLength`, `pattern` oder `enum` ausgegeben. Jedes davon würde aus einer Handvoll Datensätze abgeleitet, und ein Schema, das gültige Produktionsdaten ablehnt, ist schlechter als eines, das nur locker ist. Fügen Sie die Einschränkungen hinzu, die Sie tatsächlich begründen können.

Ist `additionalProperties` gesetzt?

Es bleibt offen, das heißt, zusätzliche Schlüssel validieren. Es zu schließen würde jedes Feld, das die API später hinzufügt, zu einem Validierungsfehler machen, und eine Stichprobe kann Ihnen nicht sagen, ob die Form geschlossen sein soll.

Wie entscheidet es, was in `required` kommt?

Eine Property ist erforderlich, wenn sie in jedem Datensatz vorhanden war, der in diese Form zusammengeführt wurde. Fügen Sie einen Datensatz ein, und alles ist erforderlich; fügen Sie fünf ein, und das Schema beginnt, Ihnen etwas Echtes zu sagen.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.