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之COOKIE支持详解
Sep 20 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php绘图之在图片上写中文和英文的方法
Jan 24 PHP
php生成动态验证码gif图片
Oct 19 PHP
twig里使用js变量的方法
Feb 05 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
php版微信公众平台入门教程之开发者认证的方法
Sep 26 PHP
php排序算法实例分析
Oct 17 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 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
微信 getAccessToken方法详解及实例
2016/11/23 PHP
php使用mysqli和pdo扩展,测试对比连接mysql数据库的效率完整示例
2019/05/09 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
js继承的实现代码
2010/08/05 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
javascript基本语法
2016/05/31 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
Vue 组件注册实例详解
2019/02/23 Javascript
VUE实现密码验证与提示功能
2019/10/18 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
vue element和nuxt的使用技巧分享
2021/01/14 Vue.js
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python字典基本操作实例分析
2015/07/11 Python
Python中常用信号signal类型实例
2018/01/25 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python的pygame安装教程详解
2020/02/10 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
简历中求职的个人自我评价
2013/12/03 职场文书
护理实习自我鉴定
2013/12/14 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
公司授权委托书范本
2014/09/18 职场文书
Python实现简单的猜单词
2021/06/15 Python
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle