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