Валидатор JSON, который предназначен для того, чтобы быть элегантным и простым в использовании.
Валидация JSON-это общая задача при автоматическом тестировании API, JSON-Schema сложна и не прост в использовании, поэтому я создал эту библиотеку, чтобы упростить процесс проверки JSON и сделать валидацию JSON более элегантной и веселой.
Вы можете установить последнюю версию JSON Validator со следующей командой:
composer require rethink/json-validator:dev-master По умолчанию JSON Validator, поставляемый с семью видами встроенных типов:
Помимо встроенных типов, можно определить свой пользовательский тип с помощью метода defineType() .
Следующие фрагменты кода показывают, как мы можем определить пользовательские типы с помощью массива или привлечения.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Этот пример определяет пользовательский тип с именем User , который имеет четыре свойства. Название и пол требуют, чтобы быть строкой, возраст требует быть целым числом, но позволяет быть нулевым, а рейтинг, необходимый для целочисленного или логического, и позволяет быть нулевым.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Это определяет, что UserCollection является массивом User . Чтобы определить тип списка, определение типа много содержит только один элемент.
$ 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 ' ]);
});Также возможно определить тип, используя вызов, который полезен для выполнения некоторой проверки данных. Например, пример выше определял тип временной метки, который требует, чтобы данные были действительным DateTime.
Мы можем проверить тип на следующие два шага:
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 ();
} В этом примере будет проверять, соответствуют ли данные $data User типа, если проверка не удается, мы можем получить сообщения об ошибках с помощью метода getErrors() .
В некоторых ситуациях мы можем захотеть, чтобы объект строго соответствовал нашему типу, мы можем использовать strict mode для достижения этого, приведен следующее: пример:
$ 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