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.ini中的php-5.2.0配置指令详解
Mar 27 PHP
基于pear auth实现登录验证
Feb 26 PHP
php定界符
Jun 19 PHP
php通过session防url攻击方法
Dec 10 PHP
php封装好的人民币数值转中文大写类
Dec 20 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
PHP结合Jquery和ajax实现瀑布流特效
Jan 07 PHP
php处理复杂xml数据示例
Jul 11 PHP
php实现的debug log日志操作类实例
Jul 12 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
Apr 27 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
php 缓存函数代码
2008/08/27 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
jQuery插件支持同一页面被多次调用
2016/02/14 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
JavaScript实现区块链
2018/03/14 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Numpy数组的保存与读取方法
2018/04/04 Python
Python函数参数操作详解
2018/08/03 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
Django-imagekit的使用详解
2020/07/06 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
优秀演讲稿范文
2013/12/29 职场文书
给导游的表扬信
2014/01/10 职场文书
保密工作承诺书
2014/08/29 职场文书
消防安全月活动总结
2015/05/08 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android