Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. JSON
  6. JSON.stringify()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

JSON.stringify()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..

Сводка

МетодJSON.stringify() возвращает JavaScript-значение, преобразованное в JSON-строку. Возможна замена значений, если какreplacer передана функция, или включение только определённых свойств, если какreplacer указан массив.

Синтаксис

js
JSON.stringify(value)JSON.stringify(value, replacer)JSON.stringify(value, replacer, space)

Параметры

value

Значение, преобразуемое в строку JSON.

replacerНеобязательный

Если является функцией, преобразует значения и свойства по ходу их преобразования в строку; если является массивом, определяет набор свойств, включаемых в объект в окончательной строке.Подробное описание функцииreplacer даётся в статьеИспользование родного объектаJSON руководства по JavaScript.

spaceНеобязательный

Делает результат красиво отформатированным (расставляя пробелы).

Описание

МетодJSON.stringify() преобразует значение в представляющую его нотацию JSON со следующими оговорками:

  • Порядок преобразования в строку свойств объектов, не являющихся массивами, не гарантируется. Не полагайтесь на порядок свойств во время преобразования.
  • ОбъектыBoolean,Number иString преобразуются в соответствующие примитивные значения, в соответствии с традиционным соглашением о семантике преобразований.
  • Значениеundefined, функция или символ, встреченные во время преобразования, будут либо опущены (если они найдены в объекте), либо превращены вnull (если они найдены в массиве).
  • Все свойства, имеющие ключ в виде символа, будут полностью проигнорированы, даже при использовании функцииreplacer.
js
JSON.stringify({}); // '{}'JSON.stringify(true); // 'true'JSON.stringify("foo"); // '"foo"'JSON.stringify([1, "false", false]); // '[1,"false",false]'JSON.stringify({ x: 5 }); // '{"x":5}'JSON.stringify({ x: 5, y: 6 });// '{"x":5,"y":6}' or '{"y":6,"x":5}'JSON.stringify([new Number(1), new String("false"), new Boolean(false)]);// '[1,"false",false]'// Символы:JSON.stringify({ x: undefined, y: Object, z: Symbol("") });// '{}'JSON.stringify({ [Symbol("foo")]: "foo" });// '{}'JSON.stringify({ [Symbol.for("foo")]: "foo" }, [Symbol.for("foo")]);// '{}'JSON.stringify({ [Symbol.for("foo")]: "foo" }, function (k, v) {  if (typeof k === "symbol") {    return "символ";  }});// '{}'

Параметрspace

Параметрspace может использоваться для управления форматированием отступов в конечной строке. Если он числовой, каждый последующий уровень вложенности будет дополнен отступом из пробелов, количество которых соответствует уровню (вплоть до десятого уровня). Если он строковый, каждый последующий уровень вложенности будет предваряться этой строкой (или её первыми десятью символами).

js
JSON.stringify({ a: 2 }, null, " ");// '{//  "a": 2// }'

Использование символа табуляции имитирует стандартное красивое форматирование:

js
JSON.stringify({ uno: 1, dos: 2 }, null, "\t");// вернёт строку:// '{//   "uno": 1,//   "dos": 2// }'

Поведение методаtoJSON()

Если преобразуемый в строку объект имеет свойство с именемtoJSON и значением свойства, установленным в функцию, то этот методtoJSON() изменит стандартное поведение преобразования в JSON: вместо преобразования объекта будет использоваться значение, возвращаемое методомtoJSON(). Например:

Предупреждение:Функции не являются допустимыми данными в JSON, так что они не будут работать. Кроме того, некоторые объекты, например, объектDate, станут строками после примененияJSON.parse().

js
var obj = {  foo: "foo",  toJSON: function () {    return "bar";  },};JSON.stringify(obj); // '"bar"'JSON.stringify({ x: obj }); // '{"x":"bar"}'

Пример использования методаJSON.stringify() вместе сlocalStorage

В случае, если вы хотите сохранить объект таким образом, чтобы его можно было восстановить даже после закрытия браузера, имеет смысл воспользоваться следующим примером, демонстрирующим применение методаJSON.stringify():

js
// Создаём некоторый объектvar session = {  screens: [],  state: true,};session.screens.push({ name: "экранА", width: 450, height: 250 });session.screens.push({ name: "экранБ", width: 650, height: 350 });session.screens.push({ name: "экранВ", width: 750, height: 120 });session.screens.push({ name: "экранГ", width: 250, height: 60 });session.screens.push({ name: "экранД", width: 390, height: 120 });session.screens.push({ name: "экранЕ", width: 1240, height: 650 });// Преобразуем его в строку JSON с помощью метода JSON.stringify(),// затем сохраняем его в localStorage под именем sessionlocalStorage.setItem("session", JSON.stringify(session));// Пример того, как можно преобразовать строку, полученную с помощью метода// JSON.stringify() и сохранённую в localStorage обратно в объектvar restoredSession = JSON.parse(localStorage.getItem("session"));// Переменная restoredSession содержит объект, который был сохранён// в localStorageconsole.log(restoredSession);

Пример использования параметраreplacer

js
var foo = {  foundation: "Mozilla",  model: "box",  week: 45,  transport: "car",  month: 7,};JSON.stringify(foo, function (key, value) {  if (typeof value === "string") {    return undefined; // удаляем все строковые свойства  }  return value;}); // '{"week":45,"month":7}'JSON.stringify(foo, ["week", "month"]);// '{"week":45,"month":7}', сохранились только свойства week и month

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-json.stringify

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2026 Movatter.jp