Книга: JavaScript. Подробное руководство, 6-е издание

6.9. Сериализация объектов

6.9. Сериализация объектов

Сериализация объектов - это процесс преобразования объектов в строковую форму представления, которая позднее может использоваться для их восстановления. Для сериализации и восстановления объектов JavaScript стандартом ЕСМА-Script 5 предоставляются встроенные функции JSON.stringify() и JSON.parse(). Эти функции используют формат обмена данными JSON. Название JSON происходит от «JavaScript Object Notation» (форма записи объектов JavaScript), а синтаксис этой формы записи напоминает синтаксис литералов объектов и массивов в языке JavaScript:

о = {х:1, у:{z:[false.null,""]}}: // Определить испытательный объект
s = JSON.stringify(o); // s == '{"х":1,"у":{"z":[false,null,'"]}}'
p = JSON.parse(s); // P - глубокая копия объекта о

Базовые реализации этих функций в ECMAScript 5 очень точно повторяют общедоступные реализации в ECMAScript 3, доступные в http://json.org/json2.js. С практической точки зрения это совершенно одинаковые реализации, и эти функции стандарта ECMAScript 5 можно использовать в ECMAScript 3, подключив указанный выше модуль json2.js.

Синтаксис формата JSON является лишь подмножеством синтаксиса языка JavaScript и не может использоваться для представления всех возможных значений, допустимых в JavaScript. Поддерживаются и могут быть сериализованы и восстановлены: объекты, массивы, строки, конечные числовые значения, true, false и null. Значения NaN, Infinity и -Infinity сериализуются в значение null. Объекты Date сериализуются в строки с датами в формате ISO (смотрите описание функции Date.toJSON()), но JSON.parse() оставляет их в строковом представлении и не восстанавливает первоначальные объекты Date. Объекты Function, RegExp и Error и значение undefined не могут быть сериализованы или восстановлены. ФункцияJSON.stringify() сериализует только перечислимые собственные свойства объекта. Если значение свойства не может быть сериализовано, это свойство просто исключается из строкового представления. Обе функции, JSON.stringify() и JSON.parse(), принимают необязательный второй аргумент, который можно использовать для настройки процесса сериализации и/или восстановления, например, посредством определения списка свойств, подлежащих сериализации, или функции преобразования значений во время сериализации. В справочном разделе приводится полное описание этих функций.

Оглавление книги


Генерация: 0.814. Запросов К БД/Cache: 2 / 0
поделиться
Вверх Вниз