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的特殊设置
Oct 09 PHP
PHP新手上路(十四)
Oct 09 PHP
php使用fputcsv()函数csv文件读写数据的方法
Jan 06 PHP
图文介绍PHP添加Redis模块及连接
Jul 28 PHP
分享3个php获取日历的函数
Sep 25 PHP
ZF框架实现发送邮件的方法
Dec 03 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
php+jQuery+Ajax简单实现页面异步刷新
Aug 08 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP进阶学习之反射基本概念与用法分析
Jun 18 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 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表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
windwos下使用php连接oracle数据库的过程分享
2014/05/26 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
轻轻松松学习JavaScript
2007/02/25 Javascript
jQuery 版本的文本输入框检查器Input Check
2009/07/09 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
js字符串转成JSON
2013/11/07 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
js简单抽奖代码
2015/01/16 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
jQuery设计思想
2017/03/07 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
Ionic3实现图片瀑布流布局
2017/08/09 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
机器学习python实战之手写数字识别
2017/11/01 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python3.6编写的单元测试示例
2019/08/17 Python
学习Python需要哪些工具
2020/09/04 Python
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
办公室文书岗位职责
2013/12/16 职场文书
公务员学习习总书记“三严三实”思想汇报
2014/09/19 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
学校教师培训工作总结
2015/10/14 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS