使用Json_encode数据或序列化数据并存储在数据库中的效率更高?

时间:2014-01-26 05:24:31

标签: php json serialization

刚刚遇到php中的serialize()。许多数据库以序列化的形式存储数据,因此很想知道什么是更有用的json或序列化以及为什么?

 Json Data->["Math","Language","Science","History"]
 serialized Data->a:4:{i:0;s:4:"Math";i:1;s:8:"Language";i:2;s:7:"Science";i:3;s:7:"History";}

2 个答案:

答案 0 :(得分:4)

Serialize()是一种在文本字符串中存储数据的本机PHP方法。它甚至可以存储对象。它有一个特殊的符号表示法。反过来说,JSON是JavaScript的Object Notation。基本上,同样的事情。但它们用于不同的领域。

JSON通常用于在线通信 - 向/从AJAX脚本,众多API等发送数据。它似乎比XML更轻松和可读,因此它与API竞争最常用的API数据传输标准。它也广泛用于配置文件,例如 Composter - 其中可读性是最重要的要求之一。 可视化的可读性和简单的结构使JSON成为在不同的平台和编程语言之间进行通信的最佳方式。这最后一句很重要。

PHP序列化用于在PHP中保存数据的情况,您还可以在PHP中恢复数据。比如,您可以将数组或$ user对象保存到PHP会话中,然后将其还原。或者在MySQL字段中存储一个多维数组,然后将其恢复为$ array变量中的数组。在大多数情况下,序列化数据并不比JSON短得多/轻,并且通常不会占用更少的空间 - 但它会使其失去可读性。但PHP有很强大的技巧 - 它保留了数据类型,类名,可见性选项等。另请参考__sleep()__wakeup()魔术类方法,允许您动态保存对象和创建特殊的构造函数,以便在运行中再次恢复它们。

在您的特定情况下,如果您使用PHP将数据存储在MySQL数据库中,然后将其读回PHP - 那么PHP序列化将是最佳使用方式。除非您想要使用其他语言访问此数据,或手动/直观地进行编辑。

答案 1 :(得分:1)

完成Oleg的回答我建议你通过json_encode和序列化PHP方法之间的客观比较来访问这个链接:

http://www.shozab.com/php-serialization-vs-json-encoding-for-an-array

它显示序列化通常较慢但不建议用于所有情况。

最后,您在stackoverflow中有许多贡献的另一个讨论:

Serialize or json in PHP?

希望你会感兴趣。