![]() |
1
49
主要优势
JSON字符串也更容易读/写/修改 用手 而不是序列化的。 另一方面,由于JSON不是特定于PHP的,所以它不知道特定于PHP的内容——比如数据类型。
|
![]() |
2
11
我在PHP中对JSON编码和序列化做了一些分析。我发现JSON最适合于简单明了的数据,比如数组。 我的实验结果见 https://www.shozab.com/php-serialization-vs-json-encoding-for-an-array/ |
![]() |
3
6
另一个优势是
这给了你:
显然,我采用了最极端的例子,数组越短,序列化的开销就越重要(相对于初始对象大小,由于格式化,不管内容多么小,都会施加最少的字符数)。不过,在一个生产网站上,我看到的序列化数组比它们的JSON等价物大20%。 |
![]() |
4
5
首先,序列化一个数组或对象并将其存储在数据库中通常是一种代码味道。有时人们会把一个逗号分隔的列表放到一列中,然后当他们后来发现需要查询它时,就会遇到各种各样的麻烦。 所以,如果这是那种情况,请仔细考虑。 至于差异。php序列化可能更紧凑,但只能与php一起使用。JSON是跨平台的,编码和解码速度可能较慢(尽管我怀疑这一点很有意义)。 |
![]() |
5
3
首先,感谢Shozab Hasan和用户359650的测试。我想知道哪种选择是最好的,现在我知道了: 要编码一个简单的数组,json可以同时使用php和javascript,也可以使用其他语言。 为了编码一个PHP对象,序列化是一个更好的选择,因为PHP对象的特殊性只能用PHP来实现。 要存储数据,要么将编码的数据存储在文件中,要么使用标准格式的MySQL。把你的数据拿回来会容易得多。MySQL有很好的功能,可以像不使用PHP处理的情况下那样获取数据。 我从未做过任何测试,但我认为如果系统文件排序足以按字母/数字顺序返回文件,那么文件存储是存储数据的最佳方法。 MySQL对这种处理很贪婪,也使用了文件系统… |
![]() |
6
2
如果您的数据永远不需要离开您的PHP应用程序,我建议使用serialize(),因为它为您的对象提供了许多额外的功能,如uu sleep()和u wakeup()方法。它还将对象还原为正确类的实例。 如果要将序列化数据传递给另一个应用程序,则应使用JSON或XML来实现兼容性。 但是要将序列化对象存储到数据库中吗?也许你应该再考虑一下。以后可能会有真正的麻烦。 |