json_encode VS serialize

前后端交互用json无可厚非,但还要根据情况选择。

速度

json_encode 比 serialize 快,因为 serialize 要检测和保存每一个值的类型和长度。

unserialize 比 json_decode 快, 因为 serialize 保存了每一个值的类型和长度,类似于 o:20s:21 等,所以恢复快,而  json_decode 需要逐一检查。

体积

json_encode 比 serialize 小,因为 serialize 保存了每个值的类型和长度。

人类可读性

json_encode 更好读

序列化的坑

如果 serialize 的数据中有 \,保存到数据库可能会被转义删除,导致 unserialize 错误。 存储到  Redis 没问题。

参考

反序列化的次数远远大于序列化的次数,所以恢复速度比编码速度更重要。服务器端从数据库或者缓存取出数据后基本要先处理操作,再  json_encode 发给前端,如果要考虑恢复速度,数据量越大,unserialize 优势越明显。

数据库操作对象化流行,从数据库取得数据不再是简单的数组,框架模型生成数据对象,实现链式操作,正是因为取出数据后要操作,serialize 完胜 json_encode

タグ:  Release    PHP    zh-Hans    Web    もっと