Un validateur JSON qui a conçu pour être élégant et facile à utiliser.
La validation JSON est une tâche courante dans les tests API automatisés, JSON-Schema est complexe et pas facile à utiliser, j'ai donc créé cette bibliothèque pour simplifier le processus de validation JSON et rendu la validation JSON plus élégante et amusante.
Vous pouvez installer la dernière version de JSON Validator avec la commande suivante:
composer require rethink/json-validator:dev-master Par défaut, le validateur JSON expédié avec sept types de types intégrés:
Outre les types intégrés, il est possible de définir votre type personnalisé via la méthode defineType() .
Les extraits de code suivants montrent comment nous pouvons définir des types personnalisés via un tableau ou un appelable.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Cet exemple définit un type personnalisé nommé User , qui a quatre propriétés. Le nom et le sexe nécessitent une chaîne, l'âge nécessite un entier mais permet d'être nullable et la notation requise pour entier ou booléen et permet d'être nul.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Cela définit UserCollection pour être un tableau d' User . Afin de définir un type de liste, la définition du type ne contient beaucoup qu'un seul élément.
$ 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 ' ]);
});Il est également possible de définir un type à l'aide d'un appelable, qui est utile pour effectuer une validation sur les données. Comme l'exemple ci-dessus a défini un type d'horodatage, qui nécessite que les données soient une datetime valide.
Nous pouvons valider un type par les deux étapes suivantes:
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 ();
} Cet exemple vérifiera si les $data correspondent à l' User de type, si la validation échoue, nous pouvons obtenir les messages d'erreur via la méthode getErrors() .
Dans certaines situations, nous pouvons vouloir qu'un objet correspond strictement à notre type, nous pouvons utiliser strict mode pour y parvenir, ce qui suit est l'exemple:
$ 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