在 PHP 中序列化还是 json?

2022-08-30 10:36:51

所以我需要用PHP编码一个数组,并将其以纯文本形式存储在MySQL数据库中,我的问题是我应该使用serialize()还是json_encode()?它们中的每一个的优点和缺点是什么?

我认为他们中的任何一个在这种情况下都会这样做。但是你更喜欢哪一个,为什么?如果它是用于数组以外的其他内容?


答案 1

它的主要优点是PHP特有的,这意味着它可以表示PHP类型,包括你自己类的实例 - 当你取消序列化你的数据时,你会拿回你的对象,仍然是你的类的实例。serialize


JSON的主要优点不是PHP所特有的:有几种语言的库可以读/写它 - 这意味着如果你想要一些可以用另一种语言而不是PHP操纵的东西,那就更好了。json_encode

JSON 字符串也比序列化字符串更容易手动读取/写入/修改。

另一方面,由于JSON不是特定于PHP的,因此它不知道特定于PHP的东西 - 例如数据类型。


作为一些旁注:

  • 即使这两者之间的速度差异很小,也无关紧要:您可能不会序列化/取消序列化大量数据
  • 您确定这是在数据库中存储数据的最佳方式吗?
    • 在数据库中,您将无法在序列化的stranbs上进行太多查询:您将无法在子句中使用您的数据,也无法在没有PHP干预的情况下更新它...where

答案 2

我对PHP中的Json编码与序列化进行了一些分析。我发现Json最适合像数组这样的简单数据。

https://www.shozab.com/php-serialization-vs-json-encoding-for-an-array/ 查看我的实验结果


推荐