Un validador JSON que diseñó para ser elegante y fácil de usar.
La validación de JSON es una tarea común en las pruebas de API automatizadas, JSON-Schema es complejo y no es fácil de usar, por lo que creé esta biblioteca para simplificar el proceso de validación de JSON e hice que la validación de JSON fuera más elegante y divertida.
Puede instalar la última versión de Json Validator con el siguiente comando:
composer require rethink/json-validator:dev-master Por defecto, el validador de JSON se envió con siete tipos de tipos incorporados:
Además de los tipos incorporados, es posible definir su tipo personalizado a través del método defineType() .
Los siguientes fragmentos de código muestran cómo podemos definir tipos personalizados a través de una matriz o llameable.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Este ejemplo define un tipo personalizado llamado User , que tiene cuatro propiedades. El nombre y el género requieren ser una cadena, la edad requiere ser un entero pero permite ser anulable, y la calificación requerida para entero o booleano y permite ser nulo.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Esto define UserCollection para que sea una serie de User . Para definir un tipo de lista, la definición del tipo de tipo contiene solo un elemento.
$ 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 ' ]);
});También es posible definir un tipo que use un llamado, que es útil para realizar alguna validación en los datos. Como el ejemplo anterior definió un tipo de marca de tiempo, que requiere que los datos sean una fecha de fecha válida.
Podemos validar un tipo por los siguientes dos pasos:
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 ();
} Este ejemplo verificará si los $data dados coinciden con el tipo de User , si la validación falla, podemos obtener los mensajes de error a través del método getErrors() .
En algunas situaciones, es posible que deseemos que un objeto coincida estrictamente, podemos utilizar strict mode para lograr esto, el siguiente es el ejemplo:
$ 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