Php 使用Json_编码数据或序列化数据并存储在数据库中更有效的方法是什么?

Php 使用Json_编码数据或序列化数据并存储在数据库中更有效的方法是什么?,php,json,serialization,Php,Json,Serialization,刚刚在php中遇到serialize()。许多数据库以序列化的形式存储数据,因此好奇地想知道什么是更有用的json或serialize,为什么 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";} Serialize()是一种以文本字符串形式存储

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

 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";}
Serialize()是一种以文本字符串形式存储数据的本机PHP方法。它甚至可以存储对象。它对对象有一个特殊的符号。JSON是JavaScript的对象表示法。基本上是一样的。但它们被用于不同的领域

JSON通常用于在线通信——向AJAX脚本、众多API等发送数据或从中发送数据。它似乎比XML轻得多,可读性好得多,因此它与之竞争最常用的API数据传输标准。它还广泛应用于配置文件中,例如,堆肥器的可读性是首要要求之一。 视觉可读性和简单的结构使JSON成为不同平台和编程语言之间进行通信的最佳方式。最后一句话很重要

PHP序列化用于在PHP中保存数据,以及在PHP中恢复数据的情况。比方说,您可以将数组或$user对象保存到PHP会话中,然后将它们还原回来。或者将多维数组存储在MySQL字段中,然后将其完全还原为$array变量中的数组。在大多数情况下,序列化数据并不比JSON短/轻很多,通常占用的空间也不小,但这会使其失去可读性。但是PHP有非常强大的技巧——它保留数据类型、类名、可见性选项等。还可以参考
\uuu sleep()
\uuu wakeup()
魔术类方法,允许您动态保存对象,并创建特殊的构造函数来动态恢复它们

在您的特定情况下,如果您使用PHP将数据存储在MySQL数据库中,然后将其读回PHP,那么PHP序列化将是最好的使用方法。除非您希望使用其他语言访问此数据,或手动/可视化编辑。

Serialize()是一种以文本字符串形式存储数据的本机PHP方法。它甚至可以存储对象。它对对象有一个特殊的符号。JSON是JavaScript的对象表示法。基本上是一样的。但它们被用于不同的领域

JSON通常用于在线通信——向AJAX脚本、众多API等发送数据或从中发送数据。它似乎比XML轻得多,可读性好得多,因此它与之竞争最常用的API数据传输标准。它还广泛应用于配置文件中,例如,堆肥器的可读性是首要要求之一。 视觉可读性和简单的结构使JSON成为不同平台和编程语言之间进行通信的最佳方式。最后一句话很重要

PHP序列化用于在PHP中保存数据,以及在PHP中恢复数据的情况。比方说,您可以将数组或$user对象保存到PHP会话中,然后将它们还原回来。或者将多维数组存储在MySQL字段中,然后将其完全还原为$array变量中的数组。在大多数情况下,序列化数据并不比JSON短/轻很多,通常占用的空间也不小,但这会使其失去可读性。但是PHP有非常强大的技巧——它保留数据类型、类名、可见性选项等。还可以参考
\uuu sleep()
\uuu wakeup()
魔术类方法,允许您动态保存对象,并创建特殊的构造函数来动态恢复它们


在您的特定情况下,如果您使用PHP将数据存储在MySQL数据库中,然后将其读回PHP,那么PHP序列化将是最好的使用方法。除非您希望使用其他语言访问此数据,或手动/可视化编辑。

要完成Oleg的回答,我建议您访问此链接,并对json_编码和序列化PHP方法进行客观比较:

它显示了序列化通常是如何缓慢的,但并不推荐用于所有情况

最后,您在stackoverflow中进行了另一次讨论,其中有许多贡献:


希望您对此感兴趣。

要完成Oleg的回答,我建议您访问此链接,并对json_编码和序列化PHP方法进行客观比较:

它显示了序列化通常是如何缓慢的,但并不推荐用于所有情况

最后,您在stackoverflow中进行了另一次讨论,其中有许多贡献:


希望您对它感兴趣。

并非所有内容都可以转换为JSON。如果要保留实际的对象实例,必须使用
serialize
。如果您只想存储简单的数据类型(即
array
s&
stdClass
es),那么就可以使用
json\u encode
。为什么不使用
base64\u encode
base64\u decode
。我认为序列化或json的关键在于速度,而不是加密。Base64既笨重又慢,但它并没有加快任何速度。真的,安德鲁。我提出这个建议的原因是。。假设OP正在存储图像,在这种情况下,
json\u encode()
失败。serialize是否能够存储任何类型的OP?并非所有内容都可以转换为json。如果要保留实际的对象实例,必须使用
serialize
。如果您只想存储简单的数据类型(即
array
s&
stdClass
es),那么就可以使用
json\u encode
。为什么不使用
base64\u encode
base64\u decode
。我认为序列化或json的关键在于速度,而不是加密。Base64既笨重又慢,但它并没有加快任何速度。真的,安德鲁。我提出这个建议的原因是。。假设OP正在存储一个图像