PHP 中 Serialize 和 JSON 区别和使用

Serialize 和 JSON 区别

1. 使用 Serialize 进行编码后,大小大概是使用 JSON 编码的1.5倍,这是因为 Serialize 后字符串包含了子串的长度,并且有更加详细的类型区分,而 JSON 只有四种类型,并且是以简单的符号表示。这也造成了 Serialize 要比 JSON 速度更快,一般快 20-30%。

2. JSON 是基于Unicode格式,所以要在 UTF-8 环境下进行操作,如果中文不想转换成 unicode,需要使用额外的参数: json_encode($array, JSON_UNESCAPED_UNICODE)

3. JSON 无法存储对象的原始的 class,解码的时候,只能解码成 stdClass 的实例。另外在 JSON 中也无法使用 __sleep() 和 __wakeup() 魔术方法。

4. 默认情况下,对象的公共属性才能被 JSON 编码,当然在 PHP 5.4 之后,可以通过类实现 JsonSerializable 接口来改变该行为。

5. 当然 JSON 更通用,它是跨平台的通用格式,在接口中,现在基本都是用 JSON 了。

Serialize 和 JSON 使用

一般来说,在内部存储,建议使用 Serialize,如果要输出接口给和第三方交互,一般使用 JSON。

THE END