php使用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 JsonSchemaValidator;
$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] %sn", $error['property'], $error['message']);
}
}
这样先定义好通信的schema,在json发送给客户端之前校验是否和约定相同,避免不必要的错误。
参考链接,json-schema 文档,php的json-schema 实现。
完整的代码在此。
PS:本站还提供了如下XML与JSON相关工具,方便大家参考使用:
在线XML/JSON互相转换工具: http://tools.zalou.cn/code/xmljson
php代码在线格式化美化工具: http://tools.zalou.cn/code/phpformat
在线XML格式化/压缩工具: http://tools.zalou.cn/code/xmlformat
json代码在线格式化/美化/压缩/编辑/转换工具: http://tools.zalou.cn/code/jsoncodeformat
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP中json格式数据操作技巧汇总》、《PHP针对XML文件操作技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
- Haproxy安装部署文档及多配置文件管理方案
- ASM 翻译系列第三十四弹:ASM磁盘组重要属性介绍
- 博客集成Hitokoto·一言经典语句功能
- 博客网页导致电脑CPU飙升的问题解决记录
- 恢复WordPress分类目录的别名链接形式
- 替代crontab,统一定时任务管理系统cronsun简介
- 小网站最简单实用的动静分离优化方案
- Haproxy进阶管理:命令行控制后端节点上下线
- 网站集成打字震动特效JS代码改进版
- Linux基础知识之文件隐藏属性
- Linux系统chmod误操作目录权限恢复方法
- 结合VBS,实现批处理自动以管理员身份执行
- ASM 翻译系列第三十六弹:ACFS磁盘组的重平衡操作
- Linux基础知识之xargs命令
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何审计MySQL 8.0中的分类数据查询?
- 聊一个 GitHub 上开源的 RBAC 权限管理系统,很6!
- Spring AOP,应该不会有比这更详细的介绍了!
- 我又发现 Spring Security 中一个小秘密!
- OpenCV的实用图像处理操作案例分享
- CentOS 7上搭建 Zabbix4.0,一次性成功,收藏了!
- 超全!我整理一波最常用的开源项目
- 【NLP】竞赛必备的NLP库
- Java NIO Selector 详解
- 【机器学习基础】一文搞懂机器学习里的L1与L2正则化
- 【深度学习】深入理解LSTM
- 短视频商城源码,两种方式实现点击出现弹窗显示
- 【50期】基础考察:ClassNotFoundException 和 NoClassDefFoundError 有什么区别
- MySQL 8.0新特性 — 管理端口
- 从单词嵌入到文档距离 :WMD一种有效的文档分类方法