Разница между JSON.stringify(response.json()) и response.text()

#javascript #json

#javascript #json

Вопрос:

После преобразования потока ответов в JSON, являются ли они абсолютно одинаковыми?

 const responseA = fetch(endpointReturnsJson)
const textA = await responseA.text()

  

В параллельной вселенной…

 const responseA = fetch(endpointReturnsJson)
const json = await responseA.json()
const textB = JSON.stringify(json)

  

Я понимаю, что TextB, скорее всего, будет включать сериализацию символов, таких как {\
Есть ли что-нибудь еще?

Комментарии:

1. Прежде всего, вам не хватает await перед обоими fetch и response.json / response.text . И предполагая, что ответ был действительным JSON в первую очередь: JSON.parse(await response.text()) должен дать тот же результат, что и await response.json() , но не обязательно наоборот, потому что, например, пробел может отличаться.

2. Спасибо! Ха — ха, неправильно придуманный

Ответ №1:

Все зависит от того, что stuff есть.

Если вы используете response.json() , вы предполагаете, что входящий поток был закодирован в формате JSON. Метод возьмет текст тела потока и проанализирует его.

Если данные не в формате JSON, то получите к ним доступ с помощью response.text() и обработайте их соответствующим образом.

Подробнее:https://developer.mozilla.org/en-US/docs/Web/API/Response