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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
php adodb分页实现代码
Mar 19 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
Oct 26 PHP
一个经典的PHP文件上传类分享
Nov 18 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
Jan 15 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
Apr 08 PHP
PHP实现八皇后算法
May 06 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 PHP
php使用redis的几种常见操作方式和用法示例
Feb 20 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递归创建和删除文件夹的代码小结
2012/04/13 PHP
php模板函数 正则实现代码
2012/10/15 PHP
PHP常用函数和常见疑难问题解答
2014/03/05 PHP
php数组删除元素示例
2014/03/21 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
js学习之----深入理解闭包
2016/11/21 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
使用JavaScript为一张图片设置备选路径的方法
2017/01/04 Javascript
vue组件name的作用小结
2018/05/23 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
浅谈javascript中的prototype和__proto__的理解
2019/04/07 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
Python输出各行命令详解
2018/02/01 Python
python通过ffmgep从视频中抽帧的方法
2018/12/05 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Python flask框架post接口调用示例
2019/07/03 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
迟到检讨书900字
2014/01/14 职场文书
上班看电影检讨书
2014/02/12 职场文书
史上最牛的辞职信
2015/02/28 职场文书
办公室管理规章制度
2015/08/04 职场文书
美容院员工规章制度
2015/08/05 职场文书