Получить res.json () Попытка вызвать метод промежуточного соединения 'java.lang.String ...' - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь преобразовать ответ из функции fetch в формат json , но при этом я получаю сообщение об ошибке Попытка вызвать метод интерфейса 'java.lang.string com.facebook.react.bridge.ReadableMap.getString (java.lang.String) 'для ссылки на пустой объект .

Вот мой фрагмент кода с функцией выборки:

export const fetchAllUsers = () => {
fetch('http://192.168.1.103:3000/api/userData')
    .then(res => {
        res.json();
        //console.warn('res keys = ' + Object.keys(res))
    })
}

Если закомментировать строку с помощью console.warn Я вижу следующие "res keys = type, status, ok, statusText, заголовки, url, _bodyInit, _bodyBlod, bodyUsed" .

bodyUsed = false

status = 200

type = default

Почему я не могу преобразовать ответ в формат json ?Или есть другой способ сделать это?

ОБНОВЛЕНИЕ

Я добавил второй then, но я все еще получаю сообщение об ошибке и консоль .warn ('res is json') не работает:

export const fetchAllUsers = () => {
fetch('http://192.168.1.103:3000/api/userData')
    .then(res => {
        res.json();
        //console.warn('res keys = ' + Object.keys(res));
    })
    .then(res => {
        console.warn('res is json');
        console.warn(res);
    })
}

UPDATE_2

Я запустил функцию fetch с другим URL, новсе еще есть проблема.Кажется, что .json() вызывает ошибку.Когда я пытаюсь утешить результат выборки в первом .then(), я получаю объект json с ключами типа , status и т. Д.

export const fetchAllUsers = () => {
    fetch(`http://${localIP}:${port}/api/userData`)
        //.then(res => res.json())
        .then(json => console.warn('JSON: ' + json))
        .catch(e => console.warn('ERROR: ' + e))
}

UPDATE_3

Забыл упомянуть, что я создаю приложение для Android с React Native.Для тестирования я использую физический смартфон.В версии Chrome 73.0.3683.

Я заменил свой запрос fetch следующим:

fetch('https://jsonplaceholder.typicode.com/todos/1')
    .then(response => response.json())
    .then(json => console.log(json));

Но все равно получаю ту же ошибку.

Когда я запускаю его в https://jsfiddle.net/, он работает.Так что причина кроется в выполнении кода на смартфоне.

1 Ответ

0 голосов
/ 28 апреля 2019

Должно быть больше контекста для вашей проблемы; см. фрагмент ниже. Это ясно работает.

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(json => console.log(json));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...