PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как получить JSON из fetch запроса?

DOM и браузер

JSON из fetch-запроса получают методом `.json()` у ответа — он асинхронный (возвращает промис): `const data = await response.json()`.

Получение JSON

const response = await fetch('/api/users');
const data = await response.json(); // парсинг тела в объект
console.log(data);

response.json():

  • Читает тело ответа.
  • Парсит JSON в JS-объект.
  • Возвращает промис (асинхронно), поэтому await.

Полный пример с обработкой

async function getUsers() {
  try {
    const response = await fetch('/api/users');
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}`); // fetch не считает 4xx/5xx ошибкой!
    }
    const data = await response.json();
    return data;
  } catch (error) {
    console.error('Ошибка:', error);
  }
}

Через .then()

fetch('/api/users')
  .then((response) => response.json()) // вернуть промис парсинга
  .then((data) => console.log(data))
  .catch((error) => console.error(error));

Нюансы

  • response.json() асинхронный — нужен await/then (тело читается потоково).
  • fetch не бросает на 4xx/5xx — проверять response.ok.
  • Другие методы тела: .text(), .blob(), .formData(), .arrayBuffer().
  • Тело можно прочитать один раз (стрим).

Коротко для собеседования

JSON из fetch получают методом response.json() — он асинхронный (промис): const data = await response.json(). fetch не считает 4xx/5xx ошибкой, поэтому проверяйте response.ok. Тело читается один раз; другие методы — .text(), .blob(). Обработка ошибок — try/catch или .catch().

Другие вопросы раздела