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 相关文章推荐
怎么使 Mysql 数据同步
Oct 09 PHP
php radio 单选框获取与保持值的实现代码
May 15 PHP
php 编写安全的代码时容易犯的错误小结
May 20 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
php的dl函数用法实例
Nov 06 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
php-beanstalkd消息队列类实例分享
Jul 19 PHP
php服务器的系统详解
Oct 12 PHP
PHP二维数组分页2种实现方法解析
Jul 09 PHP
详解PHP服务器如何在有限的资源里最大提升并发能力
May 25 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
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
Js callBack 返回前一页的js方法
2008/11/30 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
angularJS 入门基础
2015/02/09 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
微信小程序实现预览图片功能
2020/10/22 Javascript
详解vue中使用protobuf踩坑记
2019/05/07 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
基于Vue和Element-Ui搭建项目的方法
2019/09/06 Javascript
浅析Python 中整型对象存储的位置
2016/05/16 Python
Python之reload流程实例代码解析
2018/01/29 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
python+pygame实现坦克大战
2019/09/10 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
基于HTML5代码实现折叠菜单附源码下载
2015/11/27 HTML / CSS
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
幼儿园实习自我鉴定
2013/12/15 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
稽核岗位职责
2015/02/10 职场文书
社区禁毒宣传活动总结
2015/05/07 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript