Validierung des JSON-Schemas: Alles, was Sie wissen müssen (2023)

Die Integrität der Daten ist eines der wichtigsten Dinge, die beim Testen von APIs getestet werden müssen, insbesondere beim Umgang mit nachgelagerten Systemen. Das Testen Ihrer API-Antwort anhand des JSON-Schema-Standards ist eine Möglichkeit, dies zu erreichen. Ein robustes Tool zur Validierung von JSON-Daten ist JSON Schema.

Entwickler können sicherstellen, dass die von ihnen empfangenen oder erstellten Daten einer Reihe von Richtlinien und Einschränkungen entsprechen, da sie ein Standardformat zum Definieren der Struktur und des Inhalts von JSON-Daten bereitstellen. Die Verwendung von Validierungsschlüsselwörtern zur Angabe dieser Richtlinien und Nachteile ist eines der Hauptmerkmale des JSON-Schemas.

Erforderliches Schlüsselwort

Welche Eigenschaften in einem Objekt vorhanden sein müssen, wird über das erforderliche Schlüsselwort angegeben. Jede Zeichenfolge im Array akzeptiert den Namen einer erforderlichen Eigenschaft. Damit ein Objekt die Validierung besteht, muss eine erforderliche Eigenschaft vorhanden sein. Zur Veranschaulichung erfordert das folgende Schema, dass ein Objekt über die Eigenschaften name und age verfügt:

{

„Typ“: „Objekt“,

„erforderlich“: [„Name“, „Alter“],

"Eigenschaften": {

„name“: { „type“: „string“ },

„Alter“: { „Typ“: „Ganzzahl“ }

}

}

Geben Sie das Schlüsselwort ein

Der Typ eines JSON-Werts wird mit dem Schlüsselwort type angegeben. Es kann eine einzelne Zeichenfolge oder ein Array von Zeichenfolgen akzeptieren, von denen jede ein legitimer JSON-Typ ist. Die Validierung schlägt fehl, wenn ein Wert nicht zum angegebenen Typ passt. Das folgende Schema erfordert beispielsweise, dass ein Wert eine Zeichenfolge ist:

{

„Typ“: „Zeichenfolge“

}

Enum-Schlüsselwort

Das Schlüsselwort „enum“ gibt eine Liste potenzieller Werte für eine Eigenschaft an. Jeder Wert im JSON-Array muss mit einem gültigen Wert für die Eigenschaft übereinstimmen. Wenn ein Wert mit keinem vordefinierten Wert übereinstimmt, gilt er als ungültig. Ein Wert muss beispielsweise in eine der drei Kategorien im folgenden Schema fallen:

{

„Typ“: „Zeichenfolge“,

„enum“: [„rot“, „grün“, „blau“]

}

Minimale und maximale Schlüsselwörter

Die einer Eigenschaft zugewiesenen Mindest- und Höchstwerte werden mithilfe der Schlüsselwörter „Minimum“ und „Maximum“ angegeben. Sie fragen nach einer Zahl, die den niedrigsten oder höchsten zulässigen Wert darstellt. Der Wert besteht die Validierung nicht, wenn er unter das Minimum fällt oder das Maximum überschreitet. Das folgende Schema erfordert beispielsweise, dass ein Wert im Bereich von 18 und 100 liegt:

{

„Typ“: „Ganzzahl“,

„Minimum“: 18,

„maximal“: 100

}

Schlüsselwörter „exclusiveMinimum“ und „exclusiveMaximum“.

Um die Mindest- und Höchstwerte aus dem zulässigen Bereich zu entfernen, verwenden Sie die Schlüsselwörter „exclusiveMinimum“ und „exclusiveMaximum“. Das folgende Schema schreibt beispielsweise vor, dass ein Wert größer als 0 und kleiner als 100 sein muss.

{

"Nummer eingeben",

„exclusiveMinimum“: 0,

„exclusiveMaximum“: 100

}

Multipleof-Schlüsselwort

Geben Sie mithilfe des Schlüsselworts multipleOf ein Vielfaches an, bei dem ein numerischer Wert teilbar sein muss. Es erfordert ein Vielfaches einer Zahl. Ein Wert besteht die Validierung nicht, wenn er nicht durch das erforderliche Vielfache geteilt werden kann.

Das folgende Schema verlangt beispielsweise, dass ein Wert ein Vielfaches von 5 sein muss:

{

„Typ“: „Ganzzahl“,

„multipleOf“: 5

}

Validierungsschlüsselwörter für Strings-Musterschlüsselwörter

Wenn ein Zeichenfolgenwert mit einem regulären Ausdrucksmuster übereinstimmen muss, gibt das Schlüsselwort „pattern“ diese Anforderung an. Das Muster für den regulären Ausdruck ist eine erforderliche Zeichenfolge. Eine Zeichenfolge besteht die Validierung nicht, wenn sie nicht mit dem Muster übereinstimmt.

Das folgende Schema erfordert beispielsweise, dass ein Wert eine Zeichenfolge ist, die mit „https://“ beginnt:

{

„Typ“: „Zeichenfolge“,

„Muster“: „^https://“

}

Länge der Schlüsselwörter

Die minimale und maximale Länge der Zeichenfolge kann mit den Schlüsselwörtern minLength bzw. maxLength angegeben werden. Fordern Sie eine nicht negative Ganzzahl an, die entweder die kleinste oder die größte zulässige Länge darstellt. Eine Zeichenfolge besteht die Validierung nicht, wenn sie entweder kürzer als die minLength oder länger als die maxLength ist.

Das folgende Schema schreibt beispielsweise vor, dass ein Wert eine Zeichenfolge mit 5 bis 10 Zeichen sein muss:

{

„Typ“: „Zeichenfolge“,

„minLength“: 5,

„maxLength“: 10

}

Schlüsselwörter formatieren

Das erforderliche Format einer Zeichenfolge kann mit dem Schlüsselwort format angegeben werden. Das Format ist eine Zeichenfolge, die erforderlich ist. Typische Formate sind:

„Datum“: Eine Datumsfolge im Format JJJJ-MM-TT.

„Zeit“: Eine Datumsfolge im Format HH:MM:SS.

„datetime“: Eine Zeichenfolge von Datums- und Uhrzeitangaben im Format JJJJ-MM-TT.HH:MM:SSZ.

„E-Mail“: Eine Liste von E-Mail-Adressen.

Eine Zeichenfolge besteht die Validierung nicht, wenn das Format nicht genau eingehalten wird.

Zur Veranschaulichung erfordert das folgende Schema, dass ein Wert eine Zeichenfolge ist, die die authentische E-Mail-Adresse darstellt:

{

„Typ“: „Zeichenfolge“,

„Format“: „E-Mail“

}

Validierungsschlüsselwörter für Arrays

Arrays sind ein häufiger Datentyp in JSON und häufig ist eine Validierung erforderlich, um sicherzustellen, dass sie den festgelegten Richtlinien und Einschränkungen entsprechen. Für Arrays bietet JSON Schema eine Reihe von Validierungsschlüsselwörtern, mit denen diese Einschränkungen durchgesetzt werden. Schauen Sie sich einige der beliebtesten Schlüsselwörter für die JSON-Schema-Array-Validierung an.

Artikelschlüsselwort

Wenn Sie für jedes Element in einem Array ein Validierungsschema angeben möchten, können Sie das Schlüsselwort „items“ verwenden. Dieses Schlüsselwort akzeptiert entweder ein einzelnes Schema oder eine Sammlung von Schemas. Wenn ein einzelnes Schema bereitstellt, unterliegen alle Elemente im Array diesem. Wenn andererseits ein Array von Schemata bereitgestellt wird, wird jedes Schema auf das entsprechende Element im Array angewendet.

Das folgende Schema gibt beispielsweise an, dass ein Wert ein Array von Ganzzahlen sein muss:

{

„Typ“: „Array“,

"Artikel": {

„Typ“: „Ganzzahl“

}

}

Alternativ schreibt das folgende Schema vor, dass ein Wert ein Array mit einer Ganzzahl als erstem Element und einer Zeichenfolge als zweitem Element sein muss.

{

„Typ“: „Array“,

"Artikel": [

{„Typ“: „Ganzzahl“},

{„Typ“: „Zeichenfolge“}

]

}

Schlüsselwort „Zusätzliche Elemente“.

Das Validierungsschema für zusätzliche Elemente in einem Array wird mit dem Schlüsselwort „additionalItems“ angegeben. Wenn das Array zusätzliche Elemente enthält, für die es kein entsprechendes Schema gibt und das Schlüsselwort „items“ ein Array von Schemas ist. Alle zusätzlichen Elemente im Array unterliegen dem Schema, das durch das Schlüsselwort „additionalItems“ angegeben wird.

Das folgende Schema schreibt beispielsweise vor, dass ein Wert ein Array mit einer Ganzzahl als erstem Element und einer Zeichenfolge als zweitem Element sein muss. Sie können dem Array beliebige zusätzliche Elemente hinzufügen:

{

„Typ“: „Array“,

"Artikel": [

{„Typ“: „Ganzzahl“},

{„Typ“: „Zeichenfolge“}

],

„additionalItems“: true

}

Schlüsselwörter für minimale und maximale Elemente

Die minimale und maximale Anzahl von Elementen in einem Array wird mithilfe der Schlüsselwörter minItems und maxItems angegeben. Die minimale oder maximale Anzahl der akzeptierten Elemente ist eine nicht negative ganze Zahl. Die Validierung eines Arrays schlägt fehl, wenn die Anzahl der Elemente kleiner als die minItems oder größer als die maxItems ist.

Das folgende Schema erfordert beispielsweise, dass ein Wert ein Array mit mindestens 3 und höchstens 5 Elementen ist:

{

„Typ“: „Array“,

„minItems“: 3,

„maxItems“: 5

}

Schlüsselwort für einzigartige Artikel

Um anzugeben, ob jedes Element in einem Array eindeutig sein muss, verwenden Sie das Schlüsselwort uniqueItems. Es akzeptiert ein boolesches Ergebnis. Wenn „true“, muss jedes Element des Arrays eindeutig sein. Elemente werden wiederholt, wenn sie auf „false“ oder „ausgeschlossen“ gesetzt sind.

Zur Veranschaulichung schreibt das folgende Schema vor, dass ein Wert ein Array unterschiedlicher Elemente sein muss:

{

„Typ“: „Array“,

„uniqueItems“: wahr

}

Validierungsschlüsselwörter für Objekteigenschaftenschlüsselwort

Für jede Eigenschaft eines Objekts ein Schema mit dem Schlüsselwort „properties“. Es erfordert das Objekt, dessen Schlüssel die Namen der Eigenschaften sind und dessen Werte Schemata sind, die diese Eigenschaften beschreiben.

Das folgende Schema schreibt beispielsweise vor, dass ein Wert ein Objekt mit den Eigenschaften Name und Alter sein muss. Sowohl die Namens- als auch die Alterseigenschaften müssen jeweils Zeichenfolgen sein.

{

„Typ“: „Objekt“,

"Eigenschaften": {

„Name“: {“Typ“: „String“},

„Alter“: {“Typ“: „Ganzzahl“}

}

}

Zusätzliches Eigenschaftenschlüsselwort

Das Validierungsschema für zusätzliche Eigenschaften in einem Objekt wird mit dem Schlüsselwort „additionalProperties“ angegeben. Es wird verwendet, wenn das Schlüsselwort „properties“ kein Schema für die Eigenschaften aller anderen Objekte angibt. Auf alle zusätzlichen Eigenschaften im Objekt wird das durch das Schlüsselwort „additionalProperties“ angegebene Schema angewendet.

Das folgende Schema schreibt beispielsweise vor, dass ein Wert ein Objekt mit den Eigenschaften Name und Alter sein muss. Jede Art von Zusatzeigentum ist möglich.

{

„Typ“: „Objekt“,

"Eigenschaften": {

„Name“: {“Typ“: „String“},

„Alter“: {“Typ“: „Ganzzahl“}

},

„additionalProperties“: true

}

Min. und Max. Eigenschaftenschlüsselwörter

Die minimale und maximale Anzahl von Eigenschaften in einem Objekt wird insbesondere durch die Schlüsselwörter minProperties und maxProperties angegeben. Die minimale oder maximale Anzahl von Eigenschaften, die sie akzeptieren können, ist eine nicht negative ganze Zahl. Ein Objekt besteht die Validierung nicht, wenn es weniger Eigenschaften als die minProperties oder mehr Eigenschaften als die maxProperties hat.

Zur Veranschaulichung erfordert das folgende Schema, dass ein Wert ein Objekt mit mindestens zwei und höchstens fünf Eigenschaften ist:

{

„Typ“: „Objekt“,

„minProperties“: 2,

„maxProperties“: 5

}

Schlüsselwort „Abhängigkeiten“.

Abhängigkeiten zwischen Objekteigenschaften werden mit dem Schlüsselwort dependencies angegeben. Es erfordert ein Objekt mit Schemata oder Arrays von Eigenschaftsnamen als Werten und Eigenschaftsnamen als Schlüssel. Das entsprechende Schema oder Array von Eigenschaftsnamen muss vorhanden sein, wenn die Schlüsseleigenschaft des Objekts vorhanden ist.

JSON-Daten müssen einer Reihe von Regeln und Einschränkungen entsprechen, und Validierungsschlüsselwörter sind hierfür ein wirksames Werkzeug.

In diesem Artikel haben wir einige der beliebtesten Schlüsselwörter für die JSON-Schema-Validierung durchgegangen, z. B. „required“, „type“, „enum“, „minimum“ und „maximum“ sowie „pattern“. Durch die Einbeziehung dieser Schlüsselwörter in Ihre JSON-Schemas können Sie sicherstellen, dass Ihre JSON-Daten konsistent gültig sind und Ihren speziellen Anforderungen entsprechen.

References

Top Articles
Latest Posts
Article information

Author: Pres. Carey Rath

Last Updated: 30/05/2023

Views: 6241

Rating: 4 / 5 (61 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Pres. Carey Rath

Birthday: 1997-03-06

Address: 14955 Ledner Trail, East Rodrickfort, NE 85127-8369

Phone: +18682428114917

Job: National Technology Representative

Hobby: Sand art, Drama, Web surfing, Cycling, Brazilian jiu-jitsu, Leather crafting, Creative writing

Introduction: My name is Pres. Carey Rath, I am a faithful, funny, vast, joyous, lively, brave, glamorous person who loves writing and wants to share my knowledge and understanding with you.