JSON 与数据库中的序列化数组 [已关闭]

2022-08-30 08:43:36

与序列化数组相比,在MySQL数据库中存储JSON数据有哪些优点和缺点?


答案 1
  1. JSON encode() & decode()
    • PHP 版本 >= 5.0.0
      • 嵌套限制为 20。
    • PHP 版本 >= 5.2.3
      • 嵌套限制为 128。
    • PHP 版本 >= 5.3.0
      • 嵌套限制为 512。
    • 占用空间小与PHP的序列化字符串。
  2. serialize() & unserialize()
    • PHP 版本 >= 4.0.0
      • PHP 数据类型对象上的方法不会丢失。
      • __wakeup() 魔术方法调用任何对象被反序列化。(非常强大)
      • 已经注意到,有时最好将base64编码字符串放入数据库中,并使用此函数将base64解码字符串从数据库中取出,因为处理某些空格字符存在一些问题。

选择权在您手中。


答案 2

Pro JSON:

  • JSON数据可以被许多不同的语言使用,而不仅仅是PHP。
  • JSON数据是人类可读写的。
  • 占用空间更小
  • 对 JSON 进行编码比序列化更快

专业序列化阵列:

  • 取消序列化比JSON解码更快

如注释所示,JSON 占用的空间比序列化数组少。我还检查了JSON或序列化是否更快,令人惊讶的是,JSON编码比序列化更快。不过,取消序列化比JSON解码更快。

这是我用来测试的脚本:

<?php 
function runTime(){
      $mtime = microtime(); 
      $mtime = explode(' ', $mtime); 
      $mtime = $mtime[1] + $mtime[0]; 
      return $mtime; 
}
?> 
<pre>
<?php
$start = runTime();

$ser;

for($i=0; $i<1000; $i++){
    $a = array(a => 1, x => 10);
    $ser = serialize($a);
}
$total = runTime() - $start;
echo "Serializing 1000 times took \t$total seconds";
?>

<?php
$start = runTime();

$json;

for($i=0; $i<1000; $i++){
    $a = array(a => 1, x => 10);
    $json = json_encode($a);
}
$total = runTime() - $start;
echo "JSON encoding 1000 times took \t$total seconds";
?>

<?php
$start = runTime();

$ser;

for($i=0; $i<1000; $i++){
    $a = unserialize($ser);
}
$total = runTime() - $start;
echo "Unserializing 1000 times took \t$total seconds";
?>

<?php
$start = runTime();

$json;

for($i=0; $i<1000; $i++){
    $a = json_decode($json);
}
$total = runTime() - $start;
echo "JSON decoding 1000 times took \t$total seconds";
?>
</pre>

推荐