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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 29 PHP
php echo 输出字符串函数详解
May 13 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
用PHP提取中英文词语以及数字的首字母的方法介绍
Apr 23 PHP
PHPThumb图片处理实例
May 03 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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高级对象构建 多个构造函数的使用
2012/02/05 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
php常用表单验证类用法实例
2015/06/18 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
2019/03/11 PHP
Node.js:Windows7下搭建的Node.js服务(来玩玩服务器端的javascript吧,这可不是前端js插件)
2011/06/27 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
2011/10/09 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
javascript 中的try catch应用总结
2017/04/01 Javascript
vue语法之拼接字符串的示例代码
2017/10/25 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
利用Python如何生成随机密码
2016/04/20 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
技术合作协议书范本
2014/04/18 职场文书
2014年城管工作总结
2014/11/20 职场文书
会计工作总结范文2014
2014/12/23 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
楚门的世界观后感
2015/06/03 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL
Python实现批量自动整理文件
2022/03/16 Python