php json与xml序列化/反序列化


Posted in PHP onOctober 28, 2013

在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记简单数组json格式序列化/反序列化

php提供了json_encode和json_decode函数对对象进行json格式序列化/反序列化操作

$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent')); $json=json_encode($data);//将数组序列化为json字符串 echo $json.'<br/>'; $array_json= json_decode($json);//将json字符串反序列化为数组 while(list($key,$value)=each($array_json)){ if(!is_array($value)){ echo "$key: $value<br/>"; }else{ echo "$key: "; foreach ($value as $current) { echo "$current  "; } echo '<br/>'; } }

php json与xml序列化/反序列化

简单数组xml格式序列化/反序列化

php提供wddx_serialize_value和wddx_deserialize函数对对象进行xml格式序列化/反序列化操作

$data=array('Name'=>'Byron','Age'=>24,'Sex'=>'Male','Friends'=>array('Casper','Frank','Vincent')); $xml=wddx_serialize_value($data);//把数组序列化为xml字符串 echo $xml.'<br/>'; $array_xml=wddx_deserialize($xml);//把xml字符串反序列化为数组 while(list($key,$value)=each($array_xml)){ if(!is_array($value)){ echo "$key: $value<br/>"; }else{ echo "$key: "; foreach ($value as $current) { echo "$current  "; } echo '<br/>'; } }

php json与xml序列化/反序列化

 

虽然由于HTML转码原因,输出格式很奇怪,但其实序列化的字符串是这样的

php json与xml序列化/反序列化

和json格式相比较的话,多出来不少字段
复杂对象json格式序列化/反序列化很多时候我们在进行操作的时候,处理的对象并不是简单数组,而是我们自定义的一个对象的数组,json_encode和json_decode也是可以胜任的。自定义一个和上面数组内容类似的对象

class Me { public $name; public $age; public $friends; function __construct($name,$age,$friends) { $this->name=$name; $this->age=$age; $this->friends=$friends; } }

 

$me1=new Me('Byron',24,array('Casper','Frank','Vincent')); $me2=new Me('Casper',25,array('Byron','Frank','Vincent')); $me3=new Me('Frank',26,array('Casper','Byron','Vincent')); //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段 $array_me=array($me1,$me2,$me3); $json=json_encode($array_me);//序列化对象数组为json字符串 echo $json.'<br/>'; $a=json_decode($json);//将json字符串反序列化为对象数组 foreach ($a as $aa) { echo $aa->name.'<br/>'; }

 

php json与xml序列化/反序列化

 

可以看到序列化出来的字符串格式非常符合预期。复杂对象xml格式序列化/反序列化同样wddx_serialize_value和wddx_deserialize函数也能胜任复杂对象进行xml格式序列化/反序列化操作,使用刚才的对象做例子

$me1=new Me('Byron',24,array('Casper','Frank','Vincent')); $me2=new Me('Casper',25,array('Byron','Frank','Vincent')); $me3=new Me('Frank',26,array('Casper','Byron','Vincent')); //创建一个复杂的数组,子元素是自定义类,自定义类中包含数组字段 $array_me=array($me1,$me2,$me3); $xml=wddx_serialize_value($array_me);//序列化对象数组为xml字符串 echo $xml.'<br/>'; $a=wddx_deserialize($xml);//将xml字符串反序列化为对象数组 foreach ($a as $aa) { echo $aa->name.'<br/>'; }

php json与xml序列化/反序列化

生成的xml字符串结构是这样的

php json与xml序列化/反序列化
最后初学php,文章多有谬误,希望大家批评指正。

PHP 相关文章推荐
PHP Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP生成图像验证码的方法小结(2种方法)
Jul 18 PHP
PHP从二维数组得到N层分类树的实现代码
Oct 11 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 PHP
CI框架无限级分类+递归的实现代码
Nov 01 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
Jun 10 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
Aug 02 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
Apr 05 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 PHP
php中的boolean(布尔)类型详解
Oct 28 #PHP
php中的比较运算符详解
Oct 28 #PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 #PHP
析构函数与php的垃圾回收机制详解
Oct 28 #PHP
web server使用php生成web页面的三种方法总结
Oct 28 #PHP
php加密解密函数authcode的用法详细解析
Oct 28 #PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 #PHP
You might like
PHP微框架Dispatch简介
2014/06/12 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
js判断设备是否为PC并调整图片大小
2014/02/12 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
微信小程序 传值取值的几种方法总结
2017/01/16 Javascript
JavaScript常用正则函数用法示例
2017/01/23 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
python tornado微信开发入门代码
2018/08/24 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python中断多重循环的思路总结
2019/10/04 Python
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
优秀广告词大全
2014/03/19 职场文书
《开国大典》教学反思
2014/04/19 职场文书
假期安全教育广播稿
2014/10/04 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
信息技术国培研修日志
2015/11/13 职场文书
求职信如何撰写?
2019/05/22 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书