本文实例讲述了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发送给客户端之前校验是否和约定相同,避免不必要的错误。

完整的代码在此。

PS:本站还提供了如下XML与JSON相关工具,方便大家参考使用:

希望本文所述对大家PHP程序设计有所帮助。

jsonschema php 例子,[宜配屋]听图阁相关推荐

  1. python 内推_[宜配屋]听图阁

    本文实例为大家分享了网易有道2017内推编程题:洗牌,供大家参考,具体内容如下 ''' [编程题] 洗牌 时间限制:1秒 空间限制:32768K 洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程 ...

  2. java将数组加上千分号_[宜配屋]听图阁

    对于较大数字,添加千分号可以方便快速地读出数值.千分号是指从最右边开始,每隔三位加个逗号.这种写法很广泛,来源大概是因为英文中 Thousand,千.million,百万.billion,十亿 都是隔 ...

  3. 如何利用python在yi_[宜配屋]听图阁

    先了解如何利用python语言实现以平面和标记物进行姿态估计 本实验只是先实现一个简单的小例子.简单来说就是先识别出图像中的参考面,再拍摄一张目标图像,将参考面顶部的3D模型投影到目标图像上. 大致步 ...

  4. python对数组的基本操作_[宜配屋]听图阁

    这篇文章主要介绍了简单了解python数组的基本操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一,创建列表 创建一个列表,只要把逗号分隔的不同 ...

  5. 怎么用python打印照片_[宜配屋]听图阁

    这篇文章主要介绍了Python如何使用字符打印照片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 前言 第一次在学校机房里见到计算机,还是上古 ...

  6. python 判断节假日_[宜配屋]听图阁

    不废话,直接上代码Python3.6 签到代码,只需修改url,账号,密码即可,此处是登录时无验证登录,有验证码的自行补充 # -*- coding:utf-8 -*- import json imp ...

  7. python telnet模块 more_[宜配屋]听图阁 - python 处理telnet返回的More,以及get想要的那个参数方法...

    问题: 需要循环获取网元返回的某个参数,并计算出平均值. 解决方案: 通过expect解决返回More的问题. 通过具体的参数位置,精确获取到参数. 讨论: 参数位置固定,不好复用. #! usr/b ...

  8. python开发一个彩票系统_[宜配屋]听图阁

    本文为大家分享了python实现彩票系统的具体代码,供大家参考,具体内容如下 功能:1.注册  2.登录  3.充钱   4.提现  5.下注  6.开奖  7.退出 简述:彩民需要用身份证号码开户注 ...

  9. python wxpython backend wxagg_[宜配屋]听图阁

    使用Matplotlib在wxPython的Panel上绘制曲线图,需要导入: import numpy from matplotlib.backends.backend_wxagg import F ...

最新文章

  1. 熔断,限流,降级 一些理解
  2. cocoapods 终极方案
  3. 《JavaScript DOM 编程艺术》 读书笔记
  4. smtplib 抄送邮件_用Python收发电子邮件
  5. C#:继承过程中的静态成员
  6. Qt值得学习吗?详解Qt的几种开发方式
  7. 美团数据仓库-数据脱敏
  8. 获取列表中包含的元素数 在C#中
  9. 鹏华基金:科技赋能 打造公募基金的头部机构
  10. android ppsspp 存档位置,小鸡模拟器游戏存档在哪个文件夹
  11. APP 接口拦截与参数破解
  12. Linux debian利用ifconfig查看IP地址
  13. 王垠:完全用Linux工作及其后续
  14. Python实用案例,Python脚本,Python实现批量下载百度图片
  15. 2015美国计算机研究生就业,2015年美国计算机专业研究生排名
  16. 突发!又一风云人物,被警方采取刑事强制措施
  17. 项立刚:乔布斯展现了人类无尽的创造力
  18. 超简单集成HMS ML Kit二代身份证识别,一键实名认证
  19. Fedora 14 安装 mplayer + kmplayer
  20. Kotlin学习篇(2)—— Kotlin的函数

热门文章

  1. 快速入门虚拟机+linux安装(附带视频)
  2. Leetcode--671. 合并二叉树
  3. Leetcode--50. Pow(x,y)
  4. 1660用哪个驱动稳定_PDF转word怎么转?哪个PDF转换器最好用?-PDF ——快科技(驱动之家旗下媒体)-...
  5. php with语法,Yii框架关联查询with用法分析
  6. hbase集群 数据写入_Hbase实用技巧:全量+增量数据的迁移方法
  7. java中位数_java 计算中位数方法
  8. JavaSE——常用类库(下)(Date、DateFormat、Calendar、System类)
  9. Linux开发cocos2dx程序环境搭建
  10. javascript 数字精度问题