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
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
PHP缓存技术的使用说明
Aug 06 PHP
PHP防止跨域提交表单
Nov 01 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
ThinkPHP中的常用查询语言汇总
Aug 22 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
Apr 17 PHP
ThinkPHP实现生成和校验验证码功能
Apr 28 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
Aug 28 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
laravel5.1 ajax post 传值_token示例
Oct 24 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 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中for循环语句的几种变型
2007/03/16 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
PHP addslashes()函数讲解
2019/02/03 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
JS操作JSON要领详细总结
2013/08/25 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
使用vue制作FullPage页面滚动效果
2017/08/21 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
2019/01/06 Javascript
python模拟Django框架实例
2016/05/17 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
住房公积金接收函
2014/01/09 职场文书
中秋节超市促销方案
2014/01/30 职场文书
会计学专业自荐信
2014/06/25 职场文书
初中同学会活动方案
2014/08/22 职场文书
2015年企业新年寄语
2014/12/08 职场文书
清洁工个人总结
2015/03/04 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
游戏开发中如何使用CocosCreator进行音效处理
2021/04/14 Javascript
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技