JSON по сравнению с Сериализированным Массивом в [закрытой] базе данных

CPPFLAGS для препроцессора C, в то время как CXXFLAGS для компилятора C++.

См. здесь .

70
задан dreftymac 10 April 2017 в 19:52
поделиться

7 ответов

  1. JSON кодировать () и декодировать ()
    • Версия 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 декодируют строки, взятые из базы данных с помощью этой функции , поскольку возникают некоторые проблемы с обработкой некоторых символов пробела.

Выбор за вами.

93
ответ дан 24 November 2019 в 13:13
поделиться

Pro JSON:

  • Данные JSON могут использоваться многими разными языками, не только PHP
  • Данные JSON доступны для чтения и записи человеком.
  • Они занимают меньше места
  • Быстрее закодировать JSON, чем сериализовать

Pro Serialized Array:

  • Десериализовать быстрее, чем декодировать 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>
84
ответ дан 24 November 2019 в 13:13
поделиться

Переносимость: Winner JSON. JSON поддерживается на более широком спектре платформ, в то время как десериализация PHP поддерживается только (насколько мне известно) PHP. Хотя можно анализировать любой формат на любом языке, JSON имеет больше встроенных библиотек.

Future Proof: Winner JSON. JSON - это «стандарт» в том смысле, что Javascript является стандартом, и вряд ли он изменится в будущем. Группа PHP не дала никаких обещаний относительно будущего формата сериализации, и, хотя он вряд ли изменится в будущем, тот факт, что одна группа контролирует формат, означает, что в будущем вы можете получить нечитаемые данные.

Fidelity: Победитель PHP. Сериализация PHP позволит вам хранить данные с собственными типами данных PHP, включая объекты, определенные пользовательскими классами. JSON позволит вам хранить только общие примитивные типы, списки примитивных типов («массивы») и объекты пары ключ / значение. Сериализация PHP может дать некоторые преимущества здесь, если вы разрабатываете приложение PHP.

Размер файла: JSON имеет здесь небольшую победу, поскольку текущий формат сериализации PHP более подробный (поскольку он хранит больше информации).

Производительность: Кто знает, смотря по профилю.

Заключение: используйте JSON, если у вас нет веских причин использовать сериализацию PHP.

JSON позволит вам хранить только общие примитивные типы, списки примитивных типов («массивы») и объекты пары ключ / значение. Сериализация PHP может дать некоторые преимущества здесь, если вы разрабатываете приложение PHP.

Размер файла: JSON имеет здесь небольшую победу, поскольку текущий формат сериализации PHP более подробный (поскольку он хранит больше информации).

Производительность: Кто знает, смотря по профилю.

Заключение: используйте JSON, если у вас нет веских причин использовать сериализацию PHP.

JSON позволит вам хранить только общие примитивные типы, списки примитивных типов («массивы») и объекты пары ключ / значение. Сериализация PHP может дать некоторые преимущества здесь, если вы разрабатываете приложение PHP.

Размер файла: JSON имеет здесь небольшую победу, поскольку текущий формат сериализации PHP более подробный (поскольку он хранит больше информации).

Производительность: Кто знает, смотря по профилю.

Заключение: используйте JSON, если у вас нет веских причин использовать сериализацию PHP.

Кто знает, смотря по профилю.

Заключение: используйте JSON, если у вас нет веских причин использовать сериализацию PHP.

Кто знает, смотря по профилю.

Заключение: используйте JSON, если у вас нет веских причин использовать сериализацию PHP.

29
ответ дан 24 November 2019 в 13:13
поделиться

JSON более портативен, то есть вы можете более легко читать / писать в него с разных языков и т. Д. Если вы использовали сериализованные массивы PHP, вы могли бы легко использовать PHP только для доступа к нему.

7
ответ дан 24 November 2019 в 13:13
поделиться

Вы используете свои данные только с PHP? Если да: массивы, если нет: JSON.

Pro Array

  • сеансы использовали сериализацию: я думаю, что это быстрее, чем json_encode / decode (не совсем уверен)
  • многие функции с массивами в PHP (сортировка / объединение /. ..)

Pro JSON

  • JSON известен на других языках и веб-языках
  • менее подробный в базе данных
  • многие инструменты, такие как XML: JSON SChema
7
ответ дан 24 November 2019 в 13:13
поделиться

По SO было много таких вопросов.

Предпочитаемый метод хранения массивов PHP (json_encode vs serialize)

Короче: JSON лучше подходит для простых данных, но он не различает разницу между объектом и ассоциативным массивом. Сериализованные данные больше.

4
ответ дан 24 November 2019 в 13:13
поделиться

atm, json_encode () работает только с данными в кодировке UTF-8 .. следовательно, он не может кодировать такие символы, как "ñ", иначе он вернет NULL

-5
ответ дан 24 November 2019 в 13:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: