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 checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
Apache启动报错No space left on device: AH00023该怎么解决
Oct 16 PHP
深入理解PHP内核(一)
Nov 10 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
Apr 11 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP基于array_unique实现二维数组去重
Jul 14 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防注入安全代码
2008/04/09 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php操作SVN版本服务器类代码
2011/11/27 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
图解js图片轮播效果
2015/12/20 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
angular实现IM聊天图片发送实例
2017/05/08 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
js表达式与运算符简单操作示例
2020/02/15 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
Python解析树及树的遍历
2016/02/03 Python
Django中间件实现拦截器的方法
2018/06/01 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
大学团支书的自我评价分享
2013/12/14 职场文书
美容院店长岗位职责
2014/04/08 职场文书
兴趣小组活动总结
2014/05/05 职场文书
专科生就业求职信
2014/06/22 职场文书
教师党员个人自我评价
2015/03/04 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书
高一英语教学反思
2016/03/03 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
JUnit5常用注解的使用
2021/07/02 Java/Android