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 相关文章推荐
理解PHP5中static和const关键字的区别
Mar 19 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
Apr 12 PHP
php set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
php数组函数序列之array_flip() 将数组键名与值对调
Nov 07 PHP
php生成局部唯一识别码LUID的代码
Oct 06 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
php中把美国时间转为北京时间的自定义函数分享
Jul 28 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
Symfony2学习笔记之系统路由详解
Mar 17 PHP
PHP与服务器文件系统的简单交互
Oct 21 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
详解在Vue中如何使用axios跨域访问数据
2017/07/07 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
2019/10/24 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
Express 配置HTML页面访问的实现
2020/11/01 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
建筑系毕业生自我鉴定
2014/01/24 职场文书
教师先进工作者事迹材料
2014/05/01 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
法律意见书范文
2015/05/20 职场文书
导游词之凤凰古城
2019/10/22 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript