JSON-Schema-Validator

Fügen Sie ein Schema und ein Dokument ein, wählen Sie den Entwurf aus, und der Validator überprüft das Dokument gegen jedes Schlüsselwort, das Ihr Schema verwendet, type, required, enum, oneOf, $ref, if/then/else, benutzerdefiniertes format, und meldet jede Verletzung mit einem JSONPath-ähnlichen Zeiger auf den genauen fehlerhaften Ort.

So validieren Sie gegen ein Schema

  1. 1

    Schema einfügen

    JSON-Schema-Entwurf 04, 07 oder 2020-12. Das Schlüsselwort `$schema` (falls vorhanden) wählt den Entwurf automatisch aus.

  2. 2

    Dokument einfügen

    Das JSON, das Sie validieren möchten. Muss zuerst gültiges JSON sein, Syntaxfehler werden vor der Schemaauswertung angezeigt.

  3. 3

    Validieren

    Jede Verletzung wird mit einem JSON-Zeiger (`/user/email`) und dem fehlerhaften Schlüsselwort (`format`, `required` usw.) gemeldet.

  4. 4

    Beheben und erneut validieren

    Bearbeiten Sie eine der Seiten und der Status wird live aktualisiert.

Unterstützte Schlüsselwörter

Kern: type, enum, const, multipleOf, maximum, minimum, exclusiveMaximum, exclusiveMinimum, maxLength, minLength, pattern, maxItems, minItems, uniqueItems, maxContains, minContains, maxProperties, minProperties, required, dependentRequired.

Zusammensetzung: allOf, anyOf, oneOf, not.

Anwender: properties, patternProperties, additionalProperties, items, prefixItems, contains, propertyNames.

Bedingungen: if, then, else, dependentSchemas.

Referenzen: $ref, $defs, $id, $anchor.

Formate (mit Validierung, wenn aktiviert): date-time, date, time, duration, email, hostname, ipv4, ipv6, uri, uuid, regex.

Fehlerausgabe

FAIL  /user/email        format            "not-an-email" ist kein gültiges "email"
FAIL  /user/age          minimum           -3 ist kleiner als das Minimum 0
FAIL  /orders/0/total    type              "42" ist nicht vom Typ "number"
FAIL  /                  required          fehlende erforderliche Eigenschaft "shippingAddress"

Jeder Fehler enthält den Pfad und das Schlüsselwort, das fehlgeschlagen ist, was es einfach macht, es in Ihrem Editor zu finden.

Entwurfsunterschiede, die Probleme verursachen

Schlüsselwort Entwurf 04 Entwurf 07 Entwurf 2020-12
id vs $id id $id $id
exclusiveMaximum als bool Ja Zahl Zahl
items Array-Syntax items items prefixItems
$ref erlaubt Geschwister Nein Nein Ja

Stellen Sie den richtigen Entwurf ein; die Validierung eines Entwurfs-04-Schemas als 2020-12 wird id und einige andere Feinheiten falsch interpretieren.

Typische Arbeitsabläufe

  • API-Vertragstests: Führen Sie vor einem Deployment das generierte/aktualisierte OpenAPI-Schema gegen echte Beispielantworten aus.
  • Konfigurationshärtung: Validieren Sie jede YAML/JSON-Konfiguration in CI gegen ein Schema, bevor Sie zusammenführen.
  • Datenaufnahme: Lehnen Sie Payloads ab, die nicht der erwarteten Struktur entsprechen, frühzeitig mit einer klaren Fehlermeldung.

Häufige Fehler

  • Vergessen der Durchsetzung von format. Standardmäßig behandeln die meisten Validatoren unbekannte Formate nur als Annotation. Aktivieren Sie die strikte Formatvalidierung, um tatsächlich ungültige E-Mails und Daten abzulehnen.
  • Übermäßige Verwendung von oneOf. Wenn zwei Zweige von oneOf sich überschneiden, schlägt das Dokument fehl (es muss genau einem entsprechen). Verwenden Sie anyOf oder Diskriminator-Muster.
  • Strenge Schemata mit additionalProperties: false. Das Hinzufügen eines neuen optionalen Feldes wird zu einer brechenden Änderung. Lassen Sie es weg, es sei denn, Sie möchten wirklich ein geschlossenes Objekt.

Häufig gestellte Fragen

Ja. Entwurf 2020-12, 07 und 04 werden alle unterstützt. Der Validator liest das Schlüsselwort $schema aus Ihrem Dokument, um den richtigen auszuwählen, oder fällt auf den Selektor in der UI zurück.

Standardformate (email, date-time, uuid, ipv4 usw.) werden validiert, wenn die strikte Formatvalidierung aktiviert ist. Benutzerdefinierte Formate, die in Ihrem Schema deklariert sind, werden nur als Annotation behandelt, es sei denn, Sie geben einen Regex mit pattern an.

Interne Referenzen (#/$defs/foo) werden automatisch aufgelöst. Externe HTTP-Referenzen werden standardmäßig nicht abgerufen, aus Sicherheitsgründen. Inline Ihre externen Referenzen zuerst oder verwenden Sie ein spezielles Tool, das die Auflösung von entfernten $ref unterstützt.

Ja. Sowohl das Schema als auch das Dokument bleiben lokal. Eingefügter Inhalt wird niemals hochgeladen, sicher für interne API-Verträge und sensible Daten.

Verwandte Tools

Tool in anderen Sprachen verfügbar