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中Date()时间日期函数的使用方法小结
Apr 20 PHP
php 归并排序 数组交集
May 10 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
php检测url是否存在的方法
Apr 14 PHP
PHP获取当前日期和时间及格式化方法参数
May 11 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
php操作access数据库的方法详解
Feb 22 PHP
详细解读php的命名空间(一)
Feb 21 PHP
基于Laravel-admin 后台的自定义页面用法详解
Sep 30 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 读取shell管道传输过来的内容
2010/03/01 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
读jQuery之八 包装事件对象
2011/06/21 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
微信小程序中子页面向父页面传值实例详解
2017/03/20 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
python 字符串格式化代码
2013/03/17 Python
Python中os.path用法分析
2015/01/15 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
利用python求相邻数的方法示例
2017/08/18 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
Django 返回json数据的实现示例
2020/03/05 Python
python文件排序的方法总结
2020/09/13 Python
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
adidas马来西亚官网:adidas MY
2020/09/12 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
资深地理教师自我评价
2013/09/21 职场文书
机械专业应届生求职信
2013/09/21 职场文书
初三化学教学反思
2014/01/23 职场文书
设备售后服务承诺书
2014/05/30 职场文书
六查六看自查报告
2014/10/14 职场文书
专家推荐信范文
2015/03/26 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL