Um validador JSON, projetado para ser elegante e fácil de usar.
A Validação JSON é uma tarefa comum no teste de API automatizado, o JSON-Schema é complexo e não é fácil de usar, por isso criei essa biblioteca para simplificar o processo de validação JSON e tornar a validação do JSON mais elegante e divertida.
Você pode instalar a versão mais recente do Validador JSON com o seguinte comando:
composer require rethink/json-validator:dev-master Por padrão, o Validator JSON enviado com sete tipos de tipos internos:
Além dos tipos embutidos, é possível definir seu tipo personalizado via método defineType() .
Os seguintes trechos de código mostram como podemos definir tipos personalizados por meio de matriz ou chamáveis.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Este exemplo define um tipo personalizado chamado User , que possui quatro propriedades. O nome e o gênero exigem ser uma corda, a idade requer ser um número inteiro, mas permite ser anulável, e a classificação necessária para inteiro ou booleano e permite ser nula.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Isso define UserCollection como uma variedade de User . Para definir um tipo de lista, a definição do tipo contém muito um 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 ' ]);
});Também é possível definir um tipo usando um chamável, que é útil para executar alguma validação nos dados. Como o exemplo acima, definiu um tipo de carimbo de data / hora, que exige que os dados sejam um datetime válido.
Podemos validar um tipo pelas duas etapas a seguir:
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 exemplo verificará se os $data correspondem ao User do tipo, se a validação falhar, podemos obter as mensagens de erro através do método getErrors() .
Em algumas situações, podemos querer que um objeto corresponda ao nosso tipo estritamente, podemos utilizar strict mode para conseguir isso, o seguinte é o exemplo:
$ 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