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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
PHP 和 MySQL 基础教程(二)
Oct 09 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
PHP实现时间轴函数代码
Oct 08 PHP
探讨PHP使用eAccelerator的API开发详解
Jun 09 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
php处理json格式数据经典案例总结
May 19 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP多进程编程实例详解
Jul 19 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 变量类型的强制转换
2009/10/23 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
zf框架db类的分页示例分享
2014/03/14 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
js下用gb2312编码解码实现方法
2009/12/31 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
VUE v-for循环中每个item节点动态绑定不同函数的实例
2018/09/26 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
Python 字符串定义
2009/09/25 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python的Django框架中的Context使用
2015/07/15 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
python如何创建TCP服务端和客户端
2018/08/26 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
jupyter notebook 重装教程
2020/04/16 Python
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
母亲节演讲稿范文
2014/01/02 职场文书
销售经理岗位职责
2014/03/16 职场文书
销售简历自我评价怎么写
2014/09/26 职场文书
滞留工资返还协议书
2014/10/19 职场文书
股权转让协议书
2014/12/07 职场文书
雷锋观后感
2015/06/10 职场文书
nginx共享内存的机制详解
2022/03/21 Servers
nginx.conf配置文件结构小结
2022/04/08 Servers
Python循环之while无限迭代
2022/04/30 Python