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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP 图片上传代码
Sep 13 PHP
phpmyadmin3 安装配置图解教程
Mar 29 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
php实现SAE上使用storage上传与下载文件的方法
Jun 29 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
微信公众平台DEMO(PHP)
May 04 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
php-app开发接口加密详解
Apr 18 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,不用COM,生成excel文件
2006/10/09 PHP
PHP 高手之路(一)
2006/10/09 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP微商城开源代码实例
2019/03/27 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
Vue中使用方法、计算属性或观察者的方法实例详解
2018/10/31 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
Handtrack.js库实现实时监测手部运动(推荐)
2021/02/08 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
django之自定义软删除Model的方法
2019/08/14 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
德国苹果商店:MacTrade
2020/05/18 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
学前教育专业求职信
2014/09/02 职场文书
法人委托书的范本格式
2014/09/11 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书