serialize和json_encode 区别

(1)serialize主要用于php的序列化,存储到文件或者数据库中,json_encode 也是序列化,但是 主要用于与其他语言比如js进行交互使用,对于传输来说,json有许多优点。

(2)在显示上,serialize序列化的字符串包含额外的内容,这是值的类型和长度的编码

(3)在进行 json_decode解码的时候需要注意,如果是序列化的数值型数组,那么json_decode 可以还原为原来的数组(数值型数组哦),但是,如果序列化的是关联数组(或者对象),那么由于json_decode无法判断是关联数组还是对象(我们可以理解为这两个长的像无法区分),所以json_decode会默认还原解析为stdclass的对象,如果加了true才解析为关联数组

(4)json_encode不能序列化对象的成员方法,代码如下:

serialize序列化之后,反序列化的数据,可以重新调用成员方法,但是json_decode不行,会报错,具体可以测试、

(5)__sleep和__wakeUp魔术方法

当一个对象被串行化,PHP会调用__sleep方法(如果存在的话,并且进行操作,比如对变量赋值). 在反串行化一个对象后,PHP 会调用__wakeup方法. 这两个方法都不接受参数. __sleep方法必须返回一个数组,包含需要串行化的属性. PHP会抛弃其它属性的值. 如果没有__sleep方法,PHP将保存所有属性.
      在程序执行前,serialize() 函数会首先检查是否存在一个魔术方法 __sleep.如果存在,__sleep()方法会先被调用, 然后才执行串行化(序列化)操作。这个功能可以用于清理对象,并返回一个包含对象中所有变量名称的数组(必须返回。与之相反,unserialize()会检查是否存在一个__wakeup方法。如果存在,则会先调用 __wakeup方法,例如可以用于数据库的重新连接

时间: 2024-10-13 12:56:26

serialize和json_encode 区别的相关文章

json_decode()和json_encode()区别----2015-0929

json_decode对JSON格式的字符串进行编码而json_encode对变量进行 JSON 编码,需要的朋友可以参考下 1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行编码 说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量 参数

json_decode 和 json_encode 区别

json_decode: json字符串转json对象json_encode: json对象转json字符串 json对象: { "id": 68, "order_no": "C615901108975467", "snap_items": [ { "id": 1, "name": "芹菜 半斤", }, { "id": 2, "name

PHP serialize & JSON 解析

对于JSON(JavaScript Object Notation)大家应该不陌生,它是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集.JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等).

PHP5.5三种序列化性能对比

json_encode,serialize,igbinary三种序列化方式,在之前已经有过相关的测试,PHP5.5这方面的测试暂时没有,这次测试基于PHP5.5,并且测试用例,http://blog.csdn.net/hguisu/article/details/7651730的测试用例是一样的,只是从这个测试上家里igbinary serialize的测试,作为对比,可以参考http://www.ooso.net/archives/538 运行环境        PHP5.5 内存 16G 8

ajax-serialize

1.serialize jQuery的serialize()方法通过序列化表单值,创建URL编码文本字符串,我们就可以选择一个或多个表单元素,也可以直接选择form将其序列化. serializeArray() 方法通过序列化表单值来创建对象数组(名称和值) 2.serialize()与serializeArray()区别 serialize()序列化表单元素为字符串,用于 Ajax 请求. serializeArray()序列化表单元素为JSON数据. var data1 = $("#form

PHP常用函数总结(180多个)

PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 浮点数进一取整 3.floor(): 舍去法取整 echo floor(9.999); // 9 浮点数直接舍去小数部分 4.fmod(): 浮点数取余 ? 1 2 3 4 $x = 5.7; $y = 1.3; // 两个浮点数,x>y 浮点余数 $r = fmod($x, $y); // $r

由数据库某字段存数组引发的json_encode/serialize思考

导火索场景: 原来:mysql中 result表 img字段原存储字符串,内容为某图片链接: 现在:该字段需要存储多张图片链接,1-3个元素行程的数组: google得到的普遍建议有两种:https://stackoverflow.com/questions/3413291/how-to-store-an-array-into-mysql 建议一:根据具体场景构建多张表,通过主键外键形成关联. 优点:支持针对数组中某个字段的查询等:缺点:需要结合具体场景 建议二:序列化数组,php提供内置方法支

serialize函数有何用?和 JSON有什么区别

serialize函数有何用?和 JSON有什么区别 官方解释: serialize (PHP3 >= 3.0.5 , PHP4) serialize ---  产生一个可储存的值的表示 语法 : string serialize (mixed value) 说明 :  serialize( )传回一个包含由value所表示的byte-stream字符串,它能储存在任何地方. 这可用来储存或传递PHP的值,而不失去它们的型态和结构. 使用unserialize( )能使serialized字符串

serializeArray()与serialize()的区别

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-