rethink / json-validator
JSON验证器
v0.1.0
2017-07-17 08:19 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- phpunit/phpunit: ~5.0
This package is auto-updated.
Last update: 2024-09-05 01:30:11 UTC
README
一个设计得既优雅又易于使用的JSON验证器。
动机
JSON验证是自动化API测试中的常见任务,JSON-Schema复杂且不易使用,因此我创建了此库以简化JSON验证过程,并使JSON验证更加优雅和有趣。
功能
- JSON Schema验证,适用于自动化API测试
- 支持自定义类型,您可以在任何地方定义并重用自定义类型
- 支持空类型
- 更多功能即将推出...
安装
您可以使用以下命令安装最新版本的JSON验证器:
composer require rethink/json-validator:dev-master
文档
类型
默认情况下,JSON验证器附带七种内置类型
- 整数
- 双精度浮点数
- 布尔值
- 字符串
- 数字
- 数组
- 对象
除了内置类型外,您还可以通过defineType()
方法定义自定义类型。
以下代码片段展示了如何通过数组或可调用定义自定义类型。
1. 定义复合类型
$validator->defineType('User', [ 'name' => 'string', 'gender' => 'string', 'age' => '?integer', 'rating' => '?integer|boolean', ]);
此示例定义了一个名为User
的自定义类型,它有四个属性。name和gender必须是字符串,age必须是整数但允许为空,rating必须为整数或布尔值且允许为空。
2. 定义列表类型
$validator->defineType('UserCollection', ['User']);
此定义UserCollection
为User
的数组。为了定义列表类型,类型的定义中必须只包含一个元素。
3. 在可调用中定义类型
$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']); });
您还可以使用可调用来定义类型,这在执行数据验证时非常有用。例如,上面的示例定义了一个时间戳类型,要求数据为有效的日期时间。
验证类型
我们可以通过以下两个步骤来验证类型:
1. 创建验证器实例
use rethink\jsv\Validator; $validator = new Validator(); // $validator->defineType(...) Add your custom type if necessary
2. 执行验证
$matched = $validator->matches($data, 'User'); if ($matched) { // Validation passed } else { $errors = $validator->getErrors(); }
此示例将检查给定的$data
是否与类型User
匹配,如果验证失败,我们可以通过getErrors()
方法获取错误消息。
严格模式
在某些情况下,我们可能希望对象严格匹配我们的类型,我们可以利用严格模式
来实现这一点,以下是一个示例
$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
相关项目
- Blink Framework - 一个高性能的PHP Web框架和应用服务器。编辑