这篇文章主要介绍了php使用json-schema模块实现json校验,结合实例形式分析了json-schema模块的安装及使用json-schema模块进行json校验的相关操作技巧,需要的朋友可以参考下
本文实例讲述了php使用json-schema模块实现json校验。分享给大家供大家参考,具体如下:
客户端和服务端的http信息传递,采用json几乎成了标配。json格式简单,易于处理,不过由于没有格式规定,无法校验。
好在php有json-schema模块,可以用来验证json是否符合规定的格式。
安装使用composer
composer require justinrainbow/json-schema:~1.3
新建一个schema文件,如:schema.json
{
"type": "object",
"properties": {
"firstName": {
"type": "string",
"required": true
},
"lastName": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0
},
"data":{
"type":"object",
"required":true,
"properties":{
}
}
}
}
可以在字段里嵌套子结构,如果properties为空,则可以任意,比如上例的data。
类型有:
array
A JSON array.
boolean
A JSON boolean.
integer
A JSON number without a fraction or exponent part.
number
Any JSON number. Number includes integer.
null
The JSON null value.
object
A JSON object.
string
A JSON string.
php代码如下:
$json = '{"firstName":"ban", "lastName":"shan","age":1,"data":{"hobby":"coding"} }';
$validator = new JsonSchema\Validator;
$schema = file_get_contents("schema.json");
$validator->check(json_decode($json), json_decode($schema));
if ($validator->isValid()) {
echo "The supplied JSON validates against the schema.\n";
} else {
echo "JSON does not validate. Violations:\n";
foreach ($validator->getErrors() as $error) {
echo sprintf("[%s] %s\n", $error['property'], $error['message']);
}
}
这样先定义好通信的schema,在json发送给客户端之前校验是否和约定相同,避免不必要的错误。
参考链接,json-schema 文档,php的json-schema 实现。
完整的代码在此。
PS:本站还提供了如下XML与JSON相关工具,方便大家参考使用:
在线XML/JSON互相转换工具:
http://tools.mobange.com/code/xmljson
php代码在线格式化美化工具:
http://tools.mobange.com/code/phpformat
在线XML格式化/压缩工具:
http://tools.mobange.com/code/xmlformat
json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.mobange.com/code/jsoncodeformat
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP中json格式数据操作技巧汇总》、《PHP针对XML文件操作技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
本文标题为:php使用json-schema模块实现json校验示例
基础教程推荐
- laravel ORM关联关系中的 with和whereHas用法 2023-03-02
- PHP中的错误及其处理机制 2023-06-04
- PHP实现Redis单据锁以及防止并发重复写入 2022-10-12
- laravel 解决多库下的DB::transaction()事务失效问题 2023-03-08
- PHP获取MySQL执行sql语句的查询时间方法 2022-11-09
- PHP命名空间简单用法示例 2022-12-01
- thinkphp3.2.3框架动态切换多数据库的方法分析 2023-03-19
- php array分组,PHP中array数组的分组排序 2022-08-01
- 在Laravel中实现使用AJAX动态刷新部分页面 2023-03-02
- 使用PHP开发留言板功能 2023-03-13