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 相关文章推荐
PHP与已存在的Java应用程序集成
Oct 09 PHP
Search Engine Friendly的URL设计
Oct 09 PHP
PHP输出时间差函数代码
Jan 28 PHP
php连接mssql的一些相关经验及注意事项
Feb 05 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
PHP实现的简单日历类
Nov 29 PHP
php绘制圆形的方法
Jan 24 PHP
PHP创建/删除/复制文件夹、文件
May 03 PHP
PHP 无限级分类
May 04 PHP
PHP连接SQL server数据库测试脚本运行实例
Aug 24 PHP
详解使用php-cs-fixer格式化代码
Sep 16 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 数组教程 定义数组
2009/10/23 PHP
php实现用户登陆简单实例
2017/04/04 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
JavaScript弹出对话框的三种方式
2016/03/23 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
javascript中的event loop事件循环详解
2018/12/14 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python比较2个xml内容的方法
2015/05/11 Python
Python中你应该知道的一些内置函数
2017/03/31 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
送给他或她的礼物:FUN.com
2018/08/17 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
管理站站长岗位职责
2013/11/27 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
自我检讨书范文
2015/01/28 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
撤诉状格式范本
2015/05/19 职场文书
幼儿园语言教学反思
2016/02/23 职场文书