版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——php中序列化和json使用方法php中序列化和json使用方法
导语:序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。下面的是我为大家搜集的php中序列化和json使用方法,梦想对你有所扶助。
将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写入到临时或耐久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创造该对象。
通常,对象实例的全体字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规矩无关。对于任何可能包含重要的安好性数据的对象,假设可能,理应使该对象不成序列化。假设它务必为可序列化的,请尝试生成特定字段来保存不成序列化的重要数据。假设无法实现这一点,那么应留神该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。
JSON,JavaScriptObjectNotation,一种更轻、更友好的用于接口AJAX、REST等数据交换的格式。JSON是布局化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式。它是从ECMAScript语言标准衍生而来的。JSON的设计目标是使它成为小的、简捷的、文本的,而且是JavaScript的一个子集。
如下一段代码,显示了对数组和对象编码后生成的字符串及其长度
复制代码代码如下:
classFoo
public$int=1;
public$bool=TRUE;
public$array=arrayarray1,2=test,string;
publicfunctiontest$flag
echo$flag,testfunctionforFoobr/;
publicstaticfunctionoutput$str
echo$str,br/;
publicstaticfunctioncompare_serialize_and_json$data
$serialize_str=serialize$data;
self::output序列化后的值:.$serialize_str.;length=.
strlen$serialize_str;
$json_str=json_encode$data;
self::outputJSON后的值:.$json_str.;length=.strlen$json_str;
$test_data=arrayw=0,phppan=1,com=2;
//序列化数组
echo数组:br/;
Foo::compare_serialize_and_json$test_data;
$foo=newFoo;
echo对象:br/;
Foo::compare_serialize_and_json$foo;
输出:
复制代码代码如下:
数组:
序列化后的值:a:3:s:4:w;i:0;s:6:phppan;i:1;s:3:com;i:2;;length=52
JSON后的值:w:0,phppan:1,com:2;length=29
对象:
序列化后的值:O:3:Foo:3:s:3:int;i:1;s:4:bool;b:1;s:5:array;a:3:i:0;
a:1:i:0;i:1;i:2;s:4:test;i:3;s:6:string;;length=111
JSON后的'值:int:1,bool:true,array:0:[1],2:test,3:string;length=63
很明显的长度识别,serialize在编码后约莫是json的两倍。
理由:
?serialize后字符串包含了子串的长度,这可能是速度方面的优化,典型的空间换时间,但是它本身还是太重了。
?serialize有更加细致的类型区分,而json只有四种类型,并且是以简朴的符号表示。
以代码说明问题,如下对比速度的代码:
复制代码代码如下:
$max_index=10;
ini_setmemory_limit,512M;
$array=array_fill0,1000000,rand1,9999;
echoserialize:br/;
$start=xdebug_time_index;
for$i=0;$i$max_index;$i++
$str=serialize$array;
$end=xdebug_time_index;
echo$end-$start,br/;
echojson:br/;
$start=xdebug_time_index;
for$i=0;$i$max_index;$i++
$str=json_encode$array;
$end=xdebug_time_index;
echo$end-$start,br/;
unset$array,$str;
输出:
复制代码代码如下:
serialize:
9.5371007919312
json:
1.4313209056854
serialize的速度在大数据量的处境下比json差了快一个数量级。
从上面两点看,json不管是在速度还是在生成的字符串的大小上都比serialize要好,那为什么serialize还要存在呢?理由在下面这个点:实现的功能。
如下代码:
复制代码代码如下:
headerContent-type:text/html;charset=utf8;
classFoo
publicfunctiontest$flag
echo$flag,testfunctionforFoobr/;
$foo=newFoo;
echo反序列化测试:br/;
$foo-test1;
$serialize_str=serialize$foo;
$obj=unserialize$serialize_str;
$obj-test2;
$foo-test1;
$json_str=json_encode$foo;
$obj=json_decode$json_str;
$obj-test2;
die;
输出:
复制代码代码如下:
反序列化测试:
1testfunctionforFoo
2testfunctionforFoo
1testfunctionforFoo
!Fatalerror:CalltoundefinedmethodstdClass::test
jso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026贵州黔西南州贞丰县卫生健康局公益性岗位招聘6人笔试备考试题及答案解析
- 2026河南新乡平原示范区消防救援大队招聘政府专职消防员10人笔试备考题库及答案解析
- 2026四川绵阳三台县人民法院招聘司法警务辅助人员2人笔试备考试题及答案解析
- 2026江西怡和医药有限公司岗位招聘27人笔试备考试题及答案解析
- 2026风神轮胎生产岗位招聘笔试备考题库及答案解析
- 2025年安庆医药高等专科学校单招职业技能考试试题及答案解析
- 2026山东威海市乳山市中医院招聘急需紧缺专业人才7人笔试备考试题及答案解析
- 体育用品店长品牌推广与市场拓展计划
- 2025-2026学年河北省邢台市卓越联盟高一上学期第一次月考政治试题政治试题(解析版)
- 珠宝玉石行业市场调查与策略规划
- 钻探设备工具材料一览表
- 电气工作三种人培训
- 《一线表扬学》读书心得体会
- 简易游泳池采购投标方案(技术方案)
- 导乐陪伴分娩技术规范
- (1000题)上海市安全员C3证理论知识考试题库及答案
- 《油气储运安全技术》课件第六章 油气集输站场安全技术与管理
- 商户消防安全责任书范本
- 储存物品火灾危险性分类
- 采购部培训心得体会范文
- 《我是“小小发明家”》少先队活动课
评论
0/150
提交评论