Как получить 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().