Serialize() - это собственный PHP-метод хранения данных в текстовых строках. Он может даже хранить объекты. И он имеет специальные обозначения для объектов. JSON, это его очередь, является Обозначением объекта JavaScript. В принципе, то же самое. Но они используются в разных областях.
JSON обычно используется для онлайн-обмена данными - отправка данных в/из сценариев AJAX, многочисленные API и т. Д. Он оказался намного легче и читабельнее, чем XML, поэтому он конкурирует с ним за наиболее часто используемый стандарт передачи данных для API-интерфейсы. Он также широко используется в конфигурационных файлах, например, для Composter - где читаемость является одним из лучших требований. Визуальная читаемость и простая структура делают JSON лучшим способом общения между различными платформами и языками программирования. Эта последняя фраза важна.
PHP Сериализация используется в тех случаях, когда вы сохраняете данные в PHP и, вы также восстанавливаете данные на PHP. Скажем, вы можете сохранить массивы или объект $ user в сеансе PHP, а затем восстановить их обратно. Или сохраните многомерный массив в поле MySQL, а затем восстановите его точно так же, как и в переменной $ array. В большинстве случаев сериализованные данные не намного короче/легче JSON, и обычно они не занимают меньше места - однако, они теряют удобочитаемость. Но есть довольно мощные трюки, с которыми он сталкивается в PHP: он сохраняет типы данных, имена классов, параметры видимости и т. Д. Также см. __sleep()
и __wakeup()
методы магического класса, позволяющие экономить объекты «на лету» и создавать специальные конструкторы для их восстановления, снова, на лету.
В вашем конкретном случае, если вы храните данные в базе данных MySQL с помощью PHP, а затем читаете его обратно на PHP - тогда сериализация PHP будет лучшим способом использования. Если вы не хотите получать доступ к этим данным с другими языками или редактировать вручную/визуально.
Не все может быть преобразовано в JSON. Если вы хотите сохранить фактические экземпляры объекта, вам придется использовать 'serialize'. Если все, что вы хотите сохранить, это простые типы данных (т. Е. 'Array' 'и' stdClass'es), вы будете в порядке с 'json_encode'. –
Почему бы не «base64_encode» и «base64_decode» вместо этого? –
Шанкар. Я верю в сериализацию или json - это скорость, чтобы не шифровать. Base64 одновременно громоздкий, медленный, но он ничего не ускоряет. –