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数据库类
May 27 PHP
Memcache 在PHP中的使用技巧
Feb 08 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
如何使用Strace调试工具
Jun 03 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
php简单防盗链实现方法
Jul 29 PHP
php实现微信发红包
Dec 05 PHP
PHP实现通过URL提取根域名
Mar 31 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 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
PHP中static关键字原理的学习研究分析
2011/07/18 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
js 学习笔记(三)
2009/12/29 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
vue.js选中动态绑定的radio的指定项
2017/06/02 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
Python pickle模块用法实例
2015/04/14 Python
python根据日期返回星期几的方法
2015/07/06 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Python实现端口检测的方法
2018/07/24 Python
python3实现网络爬虫之BeautifulSoup使用详解
2018/12/19 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python如何从文件读取数据及解析
2019/09/19 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
医护人员英文求职信范文
2013/11/26 职场文书
军训自我鉴定范文
2014/02/13 职场文书
保护环境建议书
2014/03/12 职场文书
软环境建设心得体会
2014/09/09 职场文书
办公室主任个人总结
2015/02/28 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Rust 连接 PostgreSQL 数据库的详细过程
2022/01/22 PostgreSQL