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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
php合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
Jun 05 PHP
php数组中删除元素的实现代码
Jun 22 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
Symfony2联合查询实现方法
Mar 18 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
PHP更安全的密码加密机制Bcrypt详解
Jun 18 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 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
Javascript实现Array和String互转换的方法
2015/12/21 Javascript
封装属于自己的JS组件
2016/01/27 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
jquery删除table当前行的实例代码
2016/10/07 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python isinstance函数介绍
2015/04/14 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
2016春季幼儿园开学寄语
2015/12/03 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
如何理解python接口自动化之logging日志模块
2021/06/15 Python
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
总结高并发下Nginx性能如何优化
2021/11/01 Servers
vue+iview实现手机号分段输入框
2022/03/25 Vue.js
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
Redis特殊数据类型bitmap位图
2022/06/01 Redis