php生成json信息(php使用json-schema模块实现json校验示例)
类别:编程学习 浏览量:2460
时间:2021-10-16 00:53:44 php生成json信息
php使用json-schema模块实现json校验示例本文实例讲述了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 实现。
完整的代码在此。
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/xdao/p/json-schema_use_php.html
您可能感兴趣
- php入门教程环境搭建教程(PHP从零开始打造自己的MVC框架之入口文件实现方法详解)
- apache和php如何配置(Apache2与PHP5 for WinXP简单配置技巧)
- php如何发邮件(PHP示例演示发送邮件给某个邮箱)
- php构成方法的关键字是(PHP中的self关键字详解)
- thinkphp框架多文件上传完整代码(Thinkphp5 自定义上传文件名的实现方法)
- php 经典模式(php设计模式之装饰模式应用案例详解)
- thinkphp微信开发实例(ThinkPHP框架下微信支付功能总结踩坑笔记)
- php面向对象编程代码(php面向对象程序设计入门教程)
- php在if里添加xml代码(PHP创建XML接口示例)
- php如何对文本框输入小数的小数点(PHP保留两位小数的几种方法)
- thinkphp5怎么设置默认返回(thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结)
- 宝塔面板php能切换吗(BT宝塔面板更换网站PHP版本)
- ubuntu安装php(在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法)
- phpcurl请求能在日志里记录吗(php使用curl模拟多线程实现批处理功能示例)
- php分页函数有什么用(php实现分页功能的详细实例方法)
- thinkphp框架切换数据库(ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
- 全椒人,你还记得吗 那年,那人,那网,那些我们的青春记忆(全椒人你还记得吗)
- 全椒人在苏州10周年联谊会在苏州举办(全椒人在苏州10周年联谊会在苏州举办)
- 这个全椒人被通报表彰,看看你认识吗(这个全椒人被通报表彰)
- 全椒人,38年集体回忆 1980-2018 ,看完不要哭(全椒人38年集体回忆)
- 董元奔吟咏历代文人 1012新旧均可 全椒人张璪 1022 -1093(董元奔吟咏历代文人)
热门推荐
- MVC中使用DropDownList
- nginx 可以部署java吗(Java-利用Nginx负载均衡实现Web服务器)
- maven默认插件配置(Maven使用tomcat8-maven-plugin插件的详细教程)
- python爬虫面试经历(搞定这套Python爬虫面试题面试会so easy)
- javascript组件库实现(JavaScript分页组件使用方法详解)
- typescript开发后端(教你使用webpack打包编译TypeScript代码)
- python如何使用yield(YII2.0框架行为Behavior深入详解)
- 如何彻底关闭vmwareworkstation(关于vmware workstations与device/credential不兼容启动报错的问题)
- python 文件操作(Python File文件 方法整理)
- linux启动失败原因(安装主机大师Linux遇到bash: sudo: command not found 解决办法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9