Что делает метод JSON.stringify() с объектом?

👨‍💻 Frontend Developer 🟡 Часто попадается 🎚️ Легкий
#JavaScript #Объекты #База JS

Краткий ответ

JSON.stringify() преобразует объект JavaScript в строку в формате JSON. Это нужно для отправки данных на сервер, сохранения в localStorage или передачи между частями приложения. Метод игнорирует функции, символы и undefined.


Полный ответ

JSON.stringify() — это метод для превращения объектов в строки. Он часто используется при работе с сервером и хранилищем данных.

Что делает метод

Преобразует объект в строку формата JSON:

const user = { name: 'Иван', age: 25 };
const json = JSON.stringify(user);
// Результат: '{"name":"Иван","age":25}'

Простые примеры

Обычный объект

const obj = { a: 1, b: 'текст' };
JSON.stringify(obj);
// '{"a":1,"b":"текст"}'

Массив

const arr = [1, 2, 'три'];
JSON.stringify(arr);
// '[1,2,"три"]'

Что не преобразуется

Функции

const obj = { method: () => {} };
JSON.stringify(obj);
// '{}'

Символы

const obj = { sym: Symbol('test') };
JSON.stringify(obj);
// '{}'

Undefined

const obj = { value: undefined };
JSON.stringify(obj);
// '{}'

Практическое применение

Сохранение в localStorage

const user = { name: 'Иван', age: 25 };
localStorage.setItem('user', JSON.stringify(user));

Отправка на сервер

const data = { message: 'Привет' };
fetch('/api/send', {
  method: 'POST',
  body: JSON.stringify(data)
});

Важные моменты

1. Циклические ссылки

const obj = { name: 'Иван' };
obj.self = obj; // Циклическая ссылка
// JSON.stringify(obj); // Ошибка!

2. Порядок свойств

const obj = { b: 2, a: 1 };
JSON.stringify(obj);
// '{"b":2,"a":1}' - порядок сохраняется

Частые ошибки

1. Попытка сохранить функции

// ❌ Думаем, что функции сохранятся
const config = { 
  handler: () => console.log('click') 
};
const saved = JSON.stringify(config);
// saved = '{}' - функция потерялась!
 
// ✅ Сохраняем только данные
const config = { 
  action: 'click' // тип действия
};

2. Циклические ссылки

// ❌ Будет ошибка
const obj = { name: 'Иван' };
obj.parent = obj;
// JSON.stringify(obj); // TypeError
 
// ✅ Убираем циклические ссылки перед сохранением

Простые правила

  1. Для данных — преобразует объекты и массивы
  2. Игнорирует функции — они теряются
  3. Игнорирует символы и undefined — тоже теряются
  4. Нельзя с циклами — будет ошибка
  5. Порядок сохраняется — как в исходном объекте

JSON.stringify() — простой способ превратить объекты в строки для передачи данных. Главное помнить, что не всё можно преобразовать.


Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪