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修正代码
May 09 PHP
CentOS安装php v8js教程
Feb 26 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
PHP数组操作类实例
Jul 11 PHP
yii去掉必填项中星号的方法
Dec 28 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
Oct 07 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
Nov 06 PHP
PHP区块查询实现方法分析
May 12 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 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开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
你不知道的 TypeScript 高级类型(小结)
2020/08/28 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python字符串替换实例分析
2015/05/11 Python
python集合用法实例分析
2015/05/30 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
Python中字符串的修改及传参详解
2016/11/30 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
基于Python实现扑克牌面试题
2019/12/11 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
产品促销活动策划书
2014/01/15 职场文书
大学生心理活动总结
2014/07/04 职场文书
个人授权委托书格式
2014/08/30 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技