JSON.stringify по сравнению с сериализацией

Является ли JSON.stringify( ) эквивалентом сериализации или эффективной сериализации, или это просто необходимый шаг к сериализации?

Другими словами, JSON.stringify( ) достаточно, но не обязательно для сериализации? Или это необходимо, но не достаточно? Или это не необходимо и не достаточно для сериализации объектов JavaScript?

Ответ 1

Сериализация - это акт преобразования данных в формат, который может быть записан на диск или передан по сети (или написан на бумаге, если это то, что вы хотите). Обычно сериализация преобразует объекты в текст, но это не обязательно, поскольку существует несколько форматов сериализации, таких как bittorrent bencoding и старый/древний стандарт asn.1 форматы двоичные.

JSON - это одна из форм текстового формата сериализации и в настоящее время очень популярна благодаря простоте. Это не единственный. Другие популярные форматы включают XML и CSV.

Из-за своей популярности и ее происхождения в качестве текстового синтаксиса объектных объектов javascript ES5 вводится JSON.stringify() для генерации строки JSON из объекта. Раньше вам приходилось использовать библиотеки или писать рекурсивный синтаксический анализатор для выполнения задания.

Итак, JSON.stringify() достаточно для сериализации? Да, если желаемый формат вывода - JSON. Нет, если вы хотите использовать другие форматы вывода, такие как XML или CSV или bencode.

Существуют ограничения для формата JSON. Одним из ограничений является то, что JSON не может кодировать функции, поэтому JSON.stringify() игнорирует функции/методы при сериализации. JSON также не может кодировать циклические ссылки. В большинстве других форматов сериализации также есть это ограничение, но поскольку JSON похож на синтаксис javascript, некоторые люди предполагают, что он может делать то, что могут использовать литералы объектов javascript. Он не может.

Таким образом, отношения между "JSON" и "сериализацией" похожи на отношения между "Toyota Prius" и "car". JSON.stringify() - это просто функция, которая генерирует строки JSON, поэтому я предполагаю, что это сделает Toyota factory.

Ответ 2

Старый вопрос, но следующая информация может быть полезна для потомков.

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

Наиболее очевидным преимуществом JSON является то, что он представляет объекты таким же образом, что и литералы объектов JavaScript, хотя и немного менее гибкие. Тем не менее, если вы можете представить нормальные данные в JavaScript, то JSON является хорошим совпадением.

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

По той или иной причине JSON имеет более или менее вытесненный XML в качестве предпочтительной сериализации для отправки данных между сервером и браузером. Это настолько полезно, что многие языки включают в себя свои собственные функции JSON (например, PHP, имеет лучшие функции с именем json_encode и json_decode), а также некоторые современные базы данных. Я сам нашел удобным использовать функции JSON для хранения более сложной структуры данных в одном поле базы данных без JavaScript в любом месте).

Короткий ответ - да, по большей части это достаточный шаг для сериализации большинства данных (не двоичных). Однако это не так необходимо, поскольку есть альтернативы.

Сериализуя двоичные данные, с другой стороны, теперь это другая история...

Ответ 3

Краткий ответ... Сериализация означает то же самое, что и Stringify, ИМХО.