Ein JSON -Validator, der elegant und einfach zu bedienen war.
JSON-Validierung ist eine häufige Aufgabe bei automatisierten API-Tests. JSON-Schuema ist komplex und nicht einfach zu bedienen. Daher habe ich diese Bibliothek erstellt, um den JSON-Validierungsprozess zu vereinfachen und die JSON-Validierung eleganter und unterhaltsamer zu machen.
Sie können die neueste Version von JSON Validator mit dem folgenden Befehl installieren:
composer require rethink/json-validator:dev-master Standardmäßig wurde der JSON-Validator mit sieben Arten von integrierten Typen versendet:
Neben den eingebauten Typen ist es möglich, Ihren benutzerdefinierten Typ über defineType() -Methode zu definieren.
Die folgenden Code -Snippets zeigen, wie wir benutzerdefinierte Typen über Array oder Callable definieren können.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Dieses Beispiel definiert einen benutzerdefinierten Typ mit dem Namen User mit vier Eigenschaften. Name und Geschlecht erfordern eine Zeichenfolge, das Alter erfordert eine Ganzzahl, aber es ermöglicht, nullbar zu sein, und die Bewertung, die für ganzzahlige oder boolean erforderlich ist, und ermöglicht, null zu sein.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Dies definiert UserCollection als eine Reihe von User . Um einen Listentyp zu definieren, enthält die Definition des Typs viel nur ein Element.
$ validator -> defineType ( ' timestamp ' , function ( $ value ) {
if ((! is_string ( $ value ) && ! is_numeric ( $ value )) || strtotime ( $ value ) === false ) {
return false ;
}
$ date = date_parse ( $ value );
return checkdate ( $ date [ ' month ' ], $ date [ ' day ' ], $ date [ ' year ' ]);
});Es ist auch möglich, einen Typ mit einem Callable zu definieren, der nützlich ist, um eine Validierung der Daten durchzuführen. Das obige Beispiel definierte einen Zeitstempel -Typ, für den die Daten eine gültige DateTime sind.
Wir können einen Typ durch die folgenden zwei Schritte validieren:
use rethink jsv Validator ;
$ validator = new Validator ();
// $validator->defineType(...) Add your custom type if necessary $ matched = $ validator -> matches ( $ data , ' User ' );
if ( $ matched ) {
// Validation passed
} else {
$ errors = $ validator -> getErrors ();
} In diesem Beispiel wird prüfen, ob der angegebene $data mit dem User übereinstimmt. Wenn die Validierung fehlschlägt, können wir die Fehlermeldungen über getErrors() -Methode abrufen.
In einigen Situationen möchten wir möglicherweise, dass ein Objekt aus streng zu unserem Typ entspricht. Wir können strict mode verwenden, um dies zu erreichen. Das Folgende ist das Beispiel:
$ data = [
' name ' => ' Bob ' ,
' gender ' => ' Male ' ,
' age ' => 19 ,
' phone ' => null , // This property is unnecessary
];
$ matched = $ validator -> matches ( $ data , ' User ' , true ); // strict mode is turned on
var_dump ( $ matched ); // false is returned