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程序的国际化实现方法(利用gettext)
Aug 14 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php支付宝在线支付接口开发教程
Sep 19 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
实例讲解PHP页面静态化
Feb 05 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
Aug 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
Godaddy空间Zend Optimizer升级方法
2010/05/10 PHP
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
bootstrap日期插件daterangepicker使用详解
2017/10/19 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
Python代码的打包与发布详解
2014/07/30 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
python调用摄像头显示图像的实例
2018/08/03 Python
pandas重新生成索引的方法
2018/11/06 Python
python实现打砖块游戏
2020/02/25 Python
Python pandas 列转行操作详解(类似hive中explode方法)
2020/05/18 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
Pycharm安装第三方库失败解决方案
2020/11/17 Python
荷兰手表网站:Watch2Day
2018/07/02 全球购物
StubHub希腊:购买体育赛事、音乐会和剧院门票
2019/08/03 全球购物
教师党员思想汇报
2014/01/06 职场文书
幼儿园教育教学反思
2014/01/31 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python