> Можно ли получить данные объекта response до преобразования в json в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Софт Медиа Групп
Стек: JavaScript
> Пример ответа
Да, можно. Объект Response, возвращаемый fetch(), предоставляет доступ к телу ответа в разных форматах, и вы можете получить сырые данные до вызова .json(). Например, используя метод .text() для получения строки, .blob() для бинарных данных, .arrayBuffer() для ArrayBuffer или .formData() для FormData. Также можно прочитать тело как поток через response.body (ReadableStream) и обработать его по частям. Вот пример:
JAVASCRIPTfetch('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 для потоковой обработки:
JAVASCRIPTfetch('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, сначала читайте сырые данные, а затем парсьте их.
> Похожие задачи по frontend
Как сделать приватный метод в JavaScript
В чем отличие среды исполнения JavaScript в браузере и на сервере
Что такое Blob в JavaScript и для чего он используется?
Что такое Mutation Observer и для чего он нужен?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью