php json与xml序列化/反序列化
在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/>';
}
}
简单数组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/>';
}
}
虽然由于HTML转码原因,输出格式很奇怪,但其实序列化的字符串是这样的
和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/>';
}
可以看到序列化出来的字符串格式非常符合预期。
复杂对象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/>';
}
生成的xml字符串结构是这样的
最后
初学php,文章多有谬误,希望大家批评指正。
php json与xml序列化/反序列化的更多相关文章
- C# Json库 和 xml 序列化反序列化 存在的问题
json 正常情况下不会对私有成员进行序列化和反序列化, 因此在用json做深拷贝时, 就会丢失数据. 解决办法: 声明成公有成员. json在序列化和反序列化时, 如果类中有IComma ...
- 【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化
谨以此文感谢关注此系列文章的园友!前段时间本以为此系列文章已没多少人关注,而不打算继续下去了.因为文章贴出来之后,看的人似乎不多,也很少有人对这些文章发表评论,而且几乎无人给予“推荐”.但前几天有人询 ...
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- C# XML序列化/反序列化参考
.NET提供了很不错的XML序列化/反序列化器,(它们所在的命名空间为System.Xml.Serialization)这是很方便的,下面对它的使用做一些总结,以供参考. 1,简单序列化 public ...
- Asp.Net Web API 2第十三课——ASP.NET Web API中的JSON和XML序列化
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文描述ASP.NET W ...
- XML序列化反序列化—常用类
public class XMLSerializer { #region (public) xml序列化 /// <summary> /// ...
- C# json、xml序列化
json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...
- json 常用的序列化 反序列化对象 代码
序列化对象: ---------------------------------------------------------- Person p = new Person() { Name = & ...
- C# 复杂格式多级深度XML序列化反序列化
default.xml 文件如下: <config><partnerships> <partnership name="Main_Listener" ...
随机推荐
- Ajax Step By Step5
第五.[表单序列化] Ajax 用的最多的地方莫过于表单操作,而传统的表单操作是通过 submit 提交将数据传 输到服务器端.如果使用 Ajax 异步处理的话,我们需要将每个表单元素逐个获取才方能提 ...
- UIActivityIndicatorViewStyle
UIActivityIndicatorView *indicatorV = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyl ...
- 《uml大战需求分析》阅读笔记05
<uml大战需求分析>阅读笔记05 这次我主要阅读了这本书的第九十章,通过看这章的知识了解了不少的知识开发某系统的重要前提是:这个系统有谁在用?这些人通过这个系统能做什么事? 一般搞清楚这 ...
- 前端模板Juicer
Juicer 是一个高效.轻量的前端 (Javascript) 模板引擎,使用 Juicer 可以是你的代码实现数据和视图模型的分离(MVC). 除此之外,它还可以在 Node.js 环境中运行. 用 ...
- [转]Redis之七种武器
长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的七种武器,而本文打算将Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sorted Sets.Pub/Sub ...
- oracle中的函数及其应用
--..............常用的单行函数...................... ------------------- 常用的字符函数 ---------------------- ...
- overview
[1] Don’t panic! All will become clear in time; [2] You don’t have to know every detail of C++ to wr ...
- testng xml中按顺序执行java类
如红字部份,将安顺序执行4个类 <?xml version="1.0" encoding="UTF-8"?><suite name=" ...
- angularjs ocLazyLoad分步加载js文件,angularjs ocLazyLoad按需加载js
用angular有一段时间了,平日里只顾着写代码,没有注意到性能优化的问题,而今有时间,于是捋了捋,讲学习过程记录于此: 问题描述:由于采用angular做了网页的单页面应用,需要一次性在主布局中将所 ...
- 针对Excel的vbs操作
工程中具有导入Excel数据的功能,但是需要满足一定的格式.为了在导入之前,对Excel的格式进行规范,对vbs脚本语言进行了一定的了解,并实现了一个可以将Excel全部单元格设为文本格式的vbs脚本 ...