PHP应用JSON技巧讲解


Posted in PHP onFebruary 03, 2013

php json_decode返回数据js的处理

php json_decode后,返回到前台的数据如:encode_str =》{"green":10,"size":5,"strock":12}
则js通过 eval("obj = " + encode_str + ";") ;
便可将json数据实例化为对象, 直接obj.green即可得到数据。

Javascript 中可以用{}表示一个对象,用[]表示一个数组,如:

var obj={"a":"v","b":"x"};//这表示变量obj是一个对象,它有两个属性:a和b,属性值分别是:v和x.
var arr=["v","x"];//这表示变量arr是一个数组,它有两一元素,索引分别是0和1,值分别是:v和x.
JSON其实就是这两种格式混合在一起来表示数据的逻辑结构的格式,其实JSON就是Javascript中对象和数组的混合体

PHP提供的专门的函数来生成和解析JSON格式的数据,PHP解析出来的数据根原先Javascript的数据的意义一样,即Javascript对象解析成PHP对象,Javascript数组解析成PHP数组,PHP应用JSON的函数是:json_encode($PHPcode);
PHP解析JSON的函数是:json_decode($JSONcode);

所以JSON的形式有多种,不同的形式在PHP解释出来后的形式也是不同的。

//形式1:完全是对象的形式,这种形式的数据在Javascript
中又叫相关数组,与一般数组不同的是,
它可以通过字符串作索引来访问(用“[]”或“.”
来表示层级)   
$json='{"item1":{"item11":{"n":"chenling",
"m":"llll"},"sex":"男","age":"25"},"item2":
{"item21":"ling","sex":"女","age":"24"}}';   
$J=json_decode($json);   
print_r($J);

将输出:
stdClass Object   
(   
[item1] => stdClass Object   
(   
[item11] => stdClass Object   
(   
[n] => chenling   
[m] => llll   
)   
[sex] => 男   
[age] => 25   
)   
[item2] => stdClass Object   
(   
[item21] => ling   
[sex] => 女   
[age] => 24   
)   
)

比如说我要取得了值是chenling的那个属性,则应该这样访问:
$J->item1->item11->n;//这将取得属性n的值:chenling
其实这种访问形式跟访问普通的对象属性差不多,也相当于访问一个3维数组。
//形式2:对象和数组混合   
$json='{"item1":[{"name":[{"chen":
"chenling","ling":"chenli"}],"sex":
"男","age":"25"},{"name":"sun","sex":
"女","age":"24"}]}';   
$J=json_decode($json);   
print_r($J);   
将输出:   
stdClass Object   
(   
[item1] => Array   
(   
[0] => stdClass Object   
(   
[name] => Array   
(   
[0] => stdClass Object   
(   
[chen] => chenling   
[ling] => chenli   
)   
)   
[sex] => 男   
[age] => 25   
)   
[1] => stdClass Object   
(   
[name] => sun   
[sex] => 女   
[age] => 24   
)   
)   
)

比如说我要取得了值是chenling的那个元素,则应该这样访问:
$J->item1[0]->name[0]->chen;//这将取得元素chen的值:chenling
其实这种PHP应用JSON形式结合了对象和数组的访问方式,也相当于访问一个5维数组。
//形式3:完全数组形式   
$json='[["item1","item11"],[
"n","chenling"],["m","llll"]]';   
$J=json_decode($json);   
print_r($J);   
将输出:   
Array   
(   
[0] => Array   
(   
[0] => item1   
[1] => item11   
)   
[1] => Array   
(   
[0] => n   
[1] => chenling   
)   
[2] => Array   
(   
[0] => m   
[1] => llll   
)   
)

比如说我要取得了值是chenling的那个元素,则应该这样访问:

$J[0][1];//这将取得元素值chenling的那个元素

但是用这种方式有一个缺点,就是无法用字符串作为索引,只能用数字,用完全对象的形式可以解决这个问题,其实这种访问形式就是数组的访问方式,相当于访问一个2维数组。

PHP应用JSON小结:

从上面的PHP应用JSON例子可以看出JSON有点类似XML,也可以在PHP和Javascript之间传递带结构的数据,使用起来很方便。
需要注意的是每个属性和属性值都由引号""包括起来。

PHP 相关文章推荐
PHP 解决utf-8和gb2312编码转换问题
Mar 18 PHP
深入php之规范编程命名小结
May 15 PHP
php下载excel无法打开的解决方法
Dec 24 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
深入php内核之php in array
Nov 10 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
PHP 中使用ajax时一些常见错误总结整理
Feb 27 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
PHP 计算两个特别大的整数实例代码
May 07 PHP
PHP通过GD库实现验证码功能示例
Feb 23 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 #PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 #PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 #PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 #PHP
破解.net程序(dll文件)编译和反编译方法
Jan 31 #PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 #PHP
PHP5.4中json_encode中文转码的变化小结
Jan 30 #PHP
You might like
PHP完整的日历类(CLASS)
2006/11/27 PHP
PHPUnit PHP测试框架安装方法
2011/03/23 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
javascript web对话框与弹出窗口
2009/02/22 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
JavaScript Dom 绑定事件操作实例详解
2019/10/02 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
定制FileField中的上传文件名称实例
2017/08/23 Python
Django model update的多种用法介绍
2020/03/28 Python
Python Unittest原理及基本使用方法
2020/11/06 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
应届生护士求职信
2013/11/01 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
总账会计岗位职责
2015/04/02 职场文书
Python学习之迭代器详解
2022/04/01 Python