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 相关文章推荐
php上传文件的增强函数
Jul 21 PHP
php feof用来识别文件末尾字符的方法
Aug 01 PHP
php基础学习之变量的使用
Jun 09 PHP
解析php二分法查找数组是否包含某一元素
May 23 PHP
WordPress迁移时一些常见问题的解决方法整理
Nov 24 PHP
详解php魔术方法(Magic methods)的使用方法
Feb 14 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
thinkphp 中的volist标签在ajax操作中的特殊性(推荐)
Jan 15 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
php时间戳转换代码详解
Aug 04 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
关于PHPDocument 代码注释规范的总结
2013/06/25 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python中的并发编程实例
2014/07/07 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
如何在Python对Excel进行读取
2020/06/04 Python
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
异步传递消息系统的作用
2016/05/01 面试题
情人节寄语大全
2014/04/11 职场文书
个人合作协议书范本
2014/04/18 职场文书
军训拉歌口号
2014/06/13 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
行政执法队伍作风整顿剖析材料
2014/10/11 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
签订劳动合同通知书
2015/04/16 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL