> Можно ли получить данные объекта response до преобразования в json в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Софт Медиа Групп

Стек: JavaScript

> Пример ответа

Да, можно. Объект Response, возвращаемый fetch(), предоставляет доступ к телу ответа в разных форматах, и вы можете получить сырые данные до вызова .json(). Например, используя метод .text() для получения строки, .blob() для бинарных данных, .arrayBuffer() для ArrayBuffer или .formData() для FormData. Также можно прочитать тело как поток через response.body (ReadableStream) и обработать его по частям. Вот пример:

JAVASCRIPT
fetch('https://api.example.com/data')
.then(response => {
// Получаем сырые данные как текст
return response.text();
})
.then(rawData => {
console.log('Сырые данные:', rawData);
// Затем парсим в JSON вручную
const jsonData = JSON.parse(rawData);
console.log('JSON:', jsonData);
});

Или с использованием response.body для потоковой обработки:

JAVASCRIPT
fetch('https://api.example.com/data')
.then(response => {
const reader = response.body.getReader();
// Читаем поток по частям
return reader.read().then(function process({ done, value }) {
if (done) return;
console.log('Чанк данных:', value);
return reader.read().then(process);
});
});

Важно: после вызова одного метода чтения (например, .json() или .text()) тело ответа потребляется, и повторное чтение вызовет ошибку. Поэтому, если нужно и сырые данные, и JSON, сначала читайте сырые данные, а затем парсьте их.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью