PHP JSON格式数据交互实例代码详解


Posted in PHP onJanuary 13, 2011

在PHP中解析JSON主要用到json_encode和json_decode两个PHP JSON函数,比PHP解析XML方便很多,下面详细介绍下PHP JSON的使用。
JSON基础介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

JSON主要有两种结构:

“名称/值”对的集合,在PHP中可以理解为关联数组 (associative array)。

值的有序列表(An ordered list of values)。在PHP中可以理解为普通数组(array)。

对象是一个无序的“‘名称/值'对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值' 对”之间使用“,”(逗号)分隔。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

我目前对JSON的理解更偏向于数组,类似于PHP中的关联数组,你可以将PHP数组转换为JSON格式。

更多JSON的介绍请参考JSON官网和IBM关于JSON的介绍

PHP JSON解析实例

PHP5.2开始已经将JSON作为PHP扩展的一部分,所以并不需要另外安装JSON。另外为了保证下面的PHP JSON实例不出现中文乱码,请保证你的编码格式为UTF8。

JSON是Javascript的一部分,首先我们看下Javascript中如何定义JSON

var json_obj = {'WebName':'PHP网站开发教程网'}; 
alert(json_obj.WebName); 
var json_arr =[{'WebName':'PHP网站开发教程网','WebSite':'https://3water.com'},{'ArtTitle':'PHP JSON实例讲解'}] 
alert(json_arr[1].ArtTitle); 
var php_json = [['PHP网站开发教程网','https://3water.com'],['文章标题','PHP JSON实例讲解']]; 
alert(php_json[1][0]);

在这段JSON实例代码中我构建了所有的JSON形式,
第1行,定义了JSON以对象形式存在
第4行,定义了JSON以数组形式存在,嵌套了JSON对象,所以有点类似于PHP的关联数组,其实仍然是对象。
第7行,定了JSON以普通数组形式存在。
注意:由于Javascript是区分大小写的,所以访问JSON关联数组对象时注意key的大小写问题。

PHP与JSON格式数据交互时,第一步需要将PHP数组转换为JSON格式的数据,可使用PHP5自带的json_encode函数,当PHP解析传递过来的JSON格式数据时需要使用json_decode函数进行解析转换为PHP数组,PHP转换并解析JSON数据的实例代码如下

<?php 
$json_arr = array('WebName'=>'PHP网站开发教程网','WebSite'=>'https://3water.com'); 
$php_json = json_encode($json_arr); 
echo $php_json; 
$php_json = json_decode($php_json); 
print_r($php_json); 
?>

说明:这里通过PHP定义了关联数组,然后通过json_encode转换为JSON格式的数据,通过echo语句可以看到转换后的JSON对象,通过PHP JSON解析函数json_decode可以将JSON格式的数据解析为PHP的关联数组。如果编码不正确,JSON中文会出现乱码。如果你使用Editplus调试PHP,请注意保存文件时编码将ANSI改为UTF8。

最后我们来看下完整的PHP JSON交互实例

<?php 
$json_arr = array('WebName'=>'PHP网站开发教程网','WebSite'=>'https://3water.com'); 
$php_json = json_encode($json_arr); 
?> 
<script type="text/javascript"> 
var php_json = <?=$php_json?>; 
</script> 
<script type="text/javascript"> 
function php_json_dis(php_json) 
{ 
alert(php_json.WebName); 
alert(php_json.WebSite); 
} 
php_json_dis(php_json); 
</script>

至此,PHP通过json_encode和json_decode函数对JSON格式数据进行转换和解析的实例就介绍完了。
PHP 相关文章推荐
PHP4实际应用经验篇(3)
Oct 09 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
PHP图片上传代码
Nov 04 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
Jun 19 PHP
PHP二维数组矩形转置实例
Jul 20 PHP
PDO::errorInfo讲解
Jan 28 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PHP学习笔记之二 php入门知识
Jan 12 #PHP
php算开始时间到过期时间的相隔的天数
Jan 12 #PHP
php数据库密码的找回的步骤
Jan 12 #PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 #PHP
php 变量未定义等错误的解决方法
Jan 12 #PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 #PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 #PHP
You might like
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
PHP数组实例详解
2016/06/26 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
javascript实现图像循环明暗变化的方法
2015/02/25 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
jQuery实现锚点向下平滑滚动特效示例
2017/08/29 jQuery
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
JavaScript常用工具函数大全
2020/05/06 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python支付宝支付示例详解
2019/08/22 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
新加坡最受追捧的体验平台:Hapz
2018/01/01 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
普通PHP程序员笔试题
2016/01/01 面试题
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
2014年银行员工年终自我评价
2014/09/19 职场文书
财产分割协议书范本
2014/11/03 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang