krydos / json-rules-checker
一个小型库,用于通过规则检查JSON对象
dev-master
2015-03-24 12:33 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 15:22:55 UTC
README
JSONRulesChecker
这是一个用于在PHP中(通过正则表达式)验证JSON对象的小型库。您可以描述所需的属性并在所需值上检查它们。
安装
请更新您的composer.json文件。将以下内容添加到您的require部分
"krydos/json-rules-checker":"dev-master"
我为什么需要这个
我经常遇到这样的代码
try { $json = json_decode(getJsonStringFromAnyPlace()); if(isset($json->attr1)) { // do something with $json->attr1 if(isset($json->attr2)) { //do something with $json->attr2 } else { throw new Exception('attr2 required'); } } else { throw new Exception('attr1 required'); } } catch(Exception $e) { // do something }
我真的很不喜欢它。我写这个库是因为我想使用一些规则来验证JSON。
就像这样
try { $json = json_decode(getJsonStringFromAnyPlace()); // let's imagine that JSON looks something like this: // {"root":{"attr1":"value1", "attr2":"value2", "attr3":{"attr3_1":"123"}}} // let's write a rules $rules = array( 'root' => array( 'attr1' => '/^value1$/', 'attr2' => '', // if you don't care what value has this attribute // then just use empty string 'attr3' => array( 'attr3_1'=>'/^\d+$/' // just use regex for value validating ) ) ); $validation_result = \JSONRulesChecker\JSONChecker::checkJSON($json, $rules); // return true if(!$validation_result) { throw new Excpetion('Please check you params'); } } catch(Exception $e) { //do something }
我喜欢它 :)
那么,如何使用它
- 通过json_decode()或其他函数创建JSON对象
- 描述您JSON对象的规则(就像您上面看到的那样,只是一个PHP数组)
- 调用规则检查器,并将您的JSON对象和规则传递给检查器,如下所示
\JSONRulesChecker\JSONChecker::checkJSON($json, $rules);
- 默认情况下,检查器期望您只在规则数组中描述了所需的属性。这意味着匹配不是严格的。例如,如果您的JSON对象有3个键,但您的规则数组只有2个(与JSON匹配),那么检查器将返回true。所以,如果您想使用严格匹配,则可以将true作为第三个参数传递给checkJSON()函数,如下所示
\JSONRulesChecker\JSONChecker::checkJSON($json, $rules, true);
谢谢
@Sbrilenko - 对于正则表达式的想法
请随时提交Pull Requests
<3