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实现文件上传二法
Oct 09 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
Oct 29 PHP
php生成静态文件的多种方法分享
Jul 17 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
php按百分比生成缩略图的代码分享
May 10 PHP
php异步多线程swoole用法实例
Nov 14 PHP
PHP中ajax无刷新上传图片与图片下载功能
Feb 21 PHP
Laravel框架中自定义模板指令总结
Dec 17 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 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
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
jQuery 限制输入字符串长度
2016/06/20 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
Vue Router的懒加载路径的解决方法
2018/06/21 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
2020/08/31 Javascript
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
PyQt5每天必学之拖放事件
2020/08/27 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
详解python运行三种方式
2019/05/13 Python
python每天定时运行某程序代码
2019/08/16 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python ellipsis 的用法详解
2020/11/20 Python
Python使用tkinter实现小时钟效果
2021/02/22 Python
小橄榄树:Le Petit Olivier
2018/04/23 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年小学班主任工作总结
2014/11/08 职场文书
邀请函怎么写
2015/01/30 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server