php使用json-schema模块实现json校验示例


Posted in PHP onSeptember 28, 2019

本文实例讲述了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.3water.com/code/xmljson

php代码在线格式化美化工具:
http://tools.3water.com/code/phpformat

在线XML格式化/压缩工具:
http://tools.3water.com/code/xmlformat

json代码在线格式化/美化/压缩/编辑/转换工具:
http://tools.3water.com/code/jsoncodeformat

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
Nov 18 PHP
discuz论坛 用户登录 后台程序代码
Nov 27 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
Sep 16 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 PHP
php中文语义分析实现方法示例
Sep 28 #PHP
PHP迭代器和生成器用法实例分析
Sep 28 #PHP
php实现的数组转xml案例分析
Sep 28 #PHP
PHP反射原理与用法深入分析
Sep 28 #PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 #PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 #PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 #PHP
You might like
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
python链接Oracle数据库的方法
2015/06/28 Python
使用Python对Access读写操作
2017/03/30 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
牵手50香港:专为黄金岁月的单身人士而设的交友网站
2020/08/14 全球购物
优秀共产党员先进事迹
2014/01/27 职场文书
社会公德演讲稿
2014/05/20 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
Python django中如何使用restful框架
2021/06/23 Python
javascript函数式编程基础
2021/09/15 Javascript
Python的三个重要函数详解
2022/01/18 Python