json validator
v0.1.0
JSON验证器,旨在优雅易用。
JSON验证是自动化API测试的常见任务,JSON-SCHEMA很复杂且不容易使用,因此我创建了此库来简化JSON验证过程,并使JSON验证更加优雅和有趣。
您可以使用以下命令安装最新版本的JSON验证器:
composer require rethink/json-validator:dev-master 默认情况下,JSON验证器配备了七种内置类型:
除了内置类型外,还可以通过defineType()方法来定义您的自定义类型。
以下代码片段显示了我们如何通过数组或可呼叫来定义自定义类型。
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]);此示例定义了一个名为User的自定义类型,该类型具有四个属性。名称和性别需要一个字符串,年龄需要整数,但可以使整数或布尔值允许并允许评级并允许为null。
$ 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 ' ]);
});也可以使用可召唤定义类型,这对于对数据执行一些验证很有用。例如,上面的示例定义了时间戳类型,该时间戳类型需要数据为有效的日期时间。
我们可以通过以下两个步骤验证类型:
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