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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
用PHP为SHOPEX增加日志功能代码
Jul 02 PHP
PHP程序级守护进程的实现与优化的使用概述
May 02 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
浅析php数据类型转换
Jan 09 PHP
WordPress中获取指定分类及其子分类下的文章数目
Dec 31 PHP
PHP入门教程之表单与验证实例详解
Sep 11 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
Jun 06 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
php模式设计之观察者模式应用实例分析
Sep 25 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 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实现快速排序法函数代码
2012/08/27 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
destoon找回管理员密码的方法
2014/06/21 PHP
php中序列化与反序列化详解
2017/02/13 PHP
基于JQuery的一句代码实现表格的简单筛选
2010/07/26 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
jQuery插件windowScroll实现单屏滚动特效
2015/07/14 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
Python操作MongoDB详解及实例
2017/05/18 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
python实现图书馆研习室自动预约功能
2018/04/27 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
软件测试面试题
2015/10/21 面试题
员工自我鉴定
2013/10/09 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
党支部季度考核意见
2015/06/02 职场文书
javascript进阶篇深拷贝实现的四种方式
2022/07/07 Javascript