Чтение онлайн

на главную - закладки

Жанры

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

выполняет анализ строки в формате JSON

Синтаксис

JSON.parse(s)

JSON.parse(s, reviver)

Аргументы

s Анализируемая строка.

reviver Необязательная функция, способная преобразовывать значения, полученные в ходе анализа.

Возвращаемое значение

Объект, массив или элементарное значение, полученное в результате анализа строки s (и, возможно, измененное функцией reviver).

Описание

JSON.parse
глобальная функция, предназначенная для анализа строк в формате JSON. Обычно ей передается единственный строковый аргумент, и она возвращает значение, представленное строкой.

Необязательный аргумент reviver можно использовать для фильтрации или заключительной обработки значения перед тем, как оно будет возвращено вызывающей программе. Если этот аргумент указан, функция reviver будет вызвана для каждого элементарного значения (но не для объектов или массивов, содержащих эти элементарные значения), полученного в ходе анализа строки s. При вызове функции reviver будет передано два аргумента. Первый - имя свойства, т. е. имя свойства объекта или индекс массива в виде строки. Второй - элементарное значение этого свойства объекта или элемента массива. Кроме того, функция reviver будет вызываться как метод объекта или массива, содержащего элементарное значение. Особый случай, когда строка s является представлением элементарного значения, а не объекта или массива. В этом случае элементарное значение будет сохранено во вновь созданном объекте в свойстве, именем которого является пустая строка, и функция reviver будет вызвана для относительно этого вновь созданного объекта с пустой строкой в первом аргументе и элементарным значением - во втором.

Возвращаемое значение функции reviver станет новым значением заданного свойства. Если функция reviver вернет значение своего второго аргумента, то значение свойства не изменится. Если функция reviver вернет значение undefined (или вообще не вернет никакого значения), то данное свойство будет удалено из объекта или массива перед тем, как

JSON.parse
вернет его вызывающей программе.

Пример

Во многих случаях использование

JSON.parse
выглядит достаточно просто:

var data = JSON.parse(text);

Функция

JSON.stringify
преобразует объекты
Date
в строки, а вы с помощью собственной функции reviver можете выполнять обратное преобразование. Пример ниже также фильтрует свойства по их именам и возвращает undefined, чтобы удалить определенные свойства из полученного объекта:

var data JSON.parse(text, function(name, value) {

// Удалить свойства, имена которых начинаются с символа подчеркивания

if (name[0] == '_') return undefined;

// Если значение является строкой в формате представления дат ISO 8601,

// преобразовать его в объект Date,

if (typeof value === "string" &&

/Ad\d\d\d-\d\d-\d\dT\d\d :\d\d: \d\d. \d\d\dZ$/.test(value))

return new Date(value);

// Иначе вернуть неизмененное значение

return value

});

См. также

JSON.stringify, раздел 6.9

JSON.stringify (ECMAScript 5)

сериализует объект, массив или элементарное значение

Синтаксис

JSON.stringify(o)

JSON.stringify(o, filter)

JSON.stringify(o, filter, indent)

Arguments

о Объект, массив или элементарное значение, которое требуется преобразовать в строку в формате JSON.

filter Необязательная функция, которая может изменять значения перед сериализацией, или массив имен свойств, подлежащих сериализации.

indent Необязательный аргумент, определяющий строку или число пробелов для оформления отступов, когда требуется применить форматирование для удобочитаемости. Если отсутствует, возвращаемая строка не содержит дополнительных пробелов, но вполне понятна для человека.

Возвращаемое значение

Cстрока в формате JSON представляющая значение о после применения фильтра filter и отформатированная с применением indent.

Описание

Функция

JSON.stringify
преобразует элементарное значение, объект или массив в строку в формате JSON, которая позднее сможет быть преобразована обратно в значение с помощью функции
JSON.parse
. Обычно эта функция вызывается с единственным аргументом и возвращает соответствующую строку.

Когда функция

JSON.stringifу
вызывается с единственным аргументом и когда в нем передается объект, массив, строка, число, логическое значение или значение null, сериализация выполняется очень просто. Однако, когда значение для сериализации содержит объекты, являющиеся экземплярами класса, процесс сериализаци усложняется. Если функция
JSON.stringify
встретит объект (или массив) с методом
toJSON,
она вызовет этот метод и выполнит сериализацию полученного в результате значения, а не самого объекта. Она вызывает метод
toJS0N
с единственным строковым аргументом, в котором передается имя свойства объекта или индекс массива. Класс
Date
определяет метод
toJSON,
преобразующий объекты
Date
в строки с помощью метода
Date.toISOString
. Никакие другие классы, встроенные в язык JavaScript, не определяют метод
toJSON,
но вы можете определить его в своих классах. Помните, что несмотря на свое имя, метод
toJSON
не выполняет сериализацию объекта: он просто возвращает значение, которое будет подвергнуто сериализации вместо оригинального объекта. Второй аргумент функции
JSON.stringify
позволяет добавить в процесс сериализаци второй слой фильтрации. Этот необязательный аргумент может быть функцией или массивом и предоставляет возможность реализации двух разных способов фильтрации. Если передать во втором аргументе функцию, она будет использоваться как инструмент замены, подобно методу
toJSON,
описанному выше. Эта функция будет вызываться для каждого значения, подлежащего сериализации. Ключевое слово this внутри этой функции замены будет ссылаться на объект или массив, в котором определено текущее значение. Первым аргументом функции замены будет передаваться имя свойства объекта или индекс в массиве для текущего значения, а во втором - само значение. Это значение будет замещено возвращаемым значением функции. Если функция вернет undefined или вообще ничего не вернет, то это значение (и соответствующее ему свойство объекта или элемент массива) будет исключено из сериализации.

Если во втором аргументе передать массив строк (или чисел - они будут преобразованы в строки), эти строки будут использоваться как имена свойств объекта. Любое свойство, имя которого отсутствует в массиве, будет исключено из сериализации. Кроме того, возвращаемая строка будет содержать свойства в том же порядке, в каком они перечислены в массиве.

Функция

JSON.stringify
обычно возвращает строку без дополнительных пробелов и символов перевода строки. Если желательно сделать результат более удобочитаемым, можно передать третий агумент. Если указать в нем число от 1 до 10, функция
JSON.stringify
вставит символы перевода строки и будет использовать указанное число пробелов для оформления отступов на каждом «уровне» вложенности. Если в этом аргументе передать непустую строку, функция
JSON.stringify
вставит символы перевода строки и будет использовать указанную строку (но не более 10 первых символов из нее) для оформления отступов.

Поделиться:
Популярные книги

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Язычник

Мазин Александр Владимирович
5. Варяг
Приключения:
исторические приключения
8.91
рейтинг книги
Язычник

Беглец

Бубела Олег Николаевич
1. Совсем не герой
Фантастика:
фэнтези
попаданцы
8.94
рейтинг книги
Беглец

Три `Д` для миллиардера. Свадебный салон

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
7.14
рейтинг книги
Три `Д` для миллиардера. Свадебный салон

Тринадцатый III

NikL
3. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый III

Ермак. Телохранитель

Валериев Игорь
2. Ермак
Фантастика:
альтернативная история
7.00
рейтинг книги
Ермак. Телохранитель

Газлайтер. Том 16

Володин Григорий Григорьевич
16. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 16

Бояръ-Аниме. Газлайтер. Том 33

Володин Григорий Григорьевич
33. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Бояръ-Аниме. Газлайтер. Том 33

Законы Рода. Том 8

Мельник Андрей
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 8

Том 3. Рассказы 1896-1899

Горький Максим
3. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 3. Рассказы 1896-1899

Неучтенный элемент. Том 9

NikL
9. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 9

Дневники 1928-1929

Пришвин Михаил Михайлович
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Дневники 1928-1929