<b> return value</b>
<b>});</b>
См. также
JSON.stringify(), раздел 6.9
JSON.stringify() (ECMAScript 5)
сериализует объект, массив или элементарное значение
Синтаксис
<b>JSON.stringify(o)</b>
<b>JSON.stringify(o, filter)</b>
<b>JSON.stringify(o, filter, indent)</b>
Arguments
о Объект, массив или элементарное значение, которое требуется преобразовать в строку в формате JSON.
filter Необязательная функция, которая может изменять значения перед сериализацией, или массив имен свойств, подлежащих сериализации.
indent Необязательный аргумент, определяющий строку или число пробелов для оформления отступов, когда требуется применить форматирование для удобочитаемости. Если отсутствует, возвращаемая строка не содержит дополнительных пробелов, но вполне понятна для человека.
Возвращаемое значение
Cстрока в формате JSON представляющая значение о после применения фильтра filter и отформатированная с применением indent.
Описание
Функция
<b>JSON.stringify()</b>
преобразует элементарное значение, объект или массив в строку в формате JSON, которая позднее сможет быть преобразована обратно в значение с помощью функции
<b>JSON.parse()</b>
. Обычно эта функция вызывается с единственным аргументом и возвращает соответствующую строку.
Когда функция
<b>JSON.stringifу()</b>
вызывается с единственным аргументом и когда в нем передается объект, массив, строка, число, логическое значение или значение null, сериализация выполняется очень просто. Однако, когда значение для сериализации содержит объекты, являющиеся экземплярами класса, процесс сериализаци усложняется. Если функция
<b>JSON.stringify()</b>
встретит объект (или массив) с методом
<b>toJSON(),</b>
она вызовет этот метод и выполнит сериализацию полученного в результате значения, а не самого объекта. Она вызывает метод
<b>toJS0N()</b>
с единственным строковым аргументом, в котором передается имя свойства объекта или индекс массива. Класс
<b>Date</b>
определяет метод
<b>toJSON(),</b>
преобразующий объекты
<b>Date</b>
в строки с помощью метода
<b>Date.toISOString()</b>
. Никакие другие классы, встроенные в язык JavaScript, не определяют метод
<b>toJSON(),</b>
но вы можете определить его в своих классах. Помните, что несмотря на свое имя, метод
<b>toJSON()</b>
не выполняет сериализацию объекта: он просто возвращает значение, которое будет подвергнуто сериализации вместо оригинального объекта. Второй аргумент функции
<b>JSON.stringify()</b>
позволяет добавить в процесс сериализаци второй слой фильтрации. Этот необязательный аргумент может быть функцией или массивом и предоставляет возможность реализации двух разных способов фильтрации. Если передать во втором аргументе функцию, она будет использоваться как инструмент замены, подобно методу
<b>toJSON(),</b>
описанному выше. Эта функция будет вызываться для каждого значения, подлежащего сериализации. Ключевое слово this внутри этой функции замены будет ссылаться на объект или массив, в котором определено текущее значение. Первым аргументом функции замены будет передаваться имя свойства объекта или индекс в массиве для текущего значения, а во втором - само значение. Это значение будет замещено возвращаемым значением функции. Если функция вернет undefined или вообще ничего не вернет, то это значение (и соответствующее ему свойство объекта или элемент массива) будет исключено из сериализации.
Если во втором аргументе передать массив строк (или чисел - они будут преобразованы в строки), эти строки будут использоваться как имена свойств объекта. Любое свойство, имя которого отсутствует в массиве, будет исключено из сериализации. Кроме того, возвращаемая строка будет содержать свойства в том же порядке, в каком они перечислены в массиве.
Функция
<b>JSON.stringify()</b>
обычно возвращает строку без дополнительных пробелов и символов перевода строки. Если желательно сделать результат более удобочитаемым, можно передать третий агумент. Если указать в нем число от 1 до 10, функция
<b>JSON.stringify()</b>
вставит символы перевода строки и будет использовать указанное число пробелов для оформления отступов на каждом «уровне» вложенности. Если в этом аргументе передать непустую строку, функция
<b>JSON.stringify()</b>
вставит символы перевода строки и будет использовать указанную строку (но не более 10 первых символов из нее) для оформления отступов.
Примеры
<b>// Простая сериализация</b>
<b>var text = JSON.stringify(data);</b>
<b>// Указать точно, какие поля подлежат сериализации</b>
<b>var text = JSON.stringify(address, ["city”,"state","country"]);</b>
<b>// Указать функцию замены, чтобы можно было сериализовать объекты RegExp</b>
<b>var text = JSON.stringify(patterns, function(key, value) {</b>
<b> if (value.constructor === RegExp) return value.toString();</b>
<b> return value;</b>
<b>});</b>
<b>// Того же эффекта можно добиться иначе:</b>
<b>RegExp.prototype.toJSON = function() { return this.toString(); }</b>
См. также
JSON.parse(), раздел 6.9
Math
Math
математические функции и константы
Синтаксис
<b>Math.константа </b>
<b>Math.функция()</b>
Константы
Math.Е Константа е, основание натуральных логарифмов.
Math.LN10 Натуральный логарифм числа 10.