← Все вопросы

Как работать с JSON в JavaScript — parse и stringify?

Задан 2 месяца назад998 просмотров2 ответа
9

Получаю данные с сервера в виде JSON-строки, а мне нужен объект, чтобы взять поля. И наоборот — объект отправить строкой. Какие методы для работы с JSON в JS и где люди обычно спотыкаются?

2 ответа

14
✓ Принятый ответ — помог автору

Два метода объекта JSON: parse (строка → объект) и stringify (объект → строка).

JSON.parse — разбирает JSON-строку в JS-объект:

const str = '{"name": "Аня", "age": 20}';
const obj = JSON.parse(str);
console.log(obj.name); // 'Аня'
console.log(obj.age);  // 20 — это число

JSON.stringify — превращает объект в JSON-строку (например, чтобы отправить или сохранить):

const user = { name: 'Боб', age: 25 };
const str = JSON.stringify(user);
console.log(str); // '{"name":"Боб","age":25}'

Для красивого вывода с отступами — третий аргумент:

JSON.stringify(user, null, 2); // с переносами и отступом в 2 пробела

Где спотыкаются:

  1. parse падает на кривой строке. Любая опечатка (одинарные кавычки, висячая запятая) → SyntaxError. Оборачивай в try/catch:
try {
  const data = JSON.parse(input);
} catch (e) {
  console.log('Невалидный JSON:', e.message);
}
  1. Парсить уже готовый объект. JSON.parse(obj) где obj — объект, а не строка, даст ошибку. parse ждёт строку.

  2. stringify теряет функции и undefined — они просто выпадают из результата. Это нормально, JSON их не поддерживает.

  3. JSON требует двойные кавычки у ключей и строк — одинарные не пройдут парсинг.

5

Частый практический приём — глубокая копия объекта через пару stringify/parse:

const copy = JSON.parse(JSON.stringify(original));

Работает для простых данных (числа, строки, массивы, вложенные объекты), но не копирует функции, Date превратит в строку, а циклические ссылки уронят stringify. Для них есть structuredClone(original) в современных средах.

Ваш ответ

Войдите, чтобы ответить на вопрос.