2017-02-08 4 views
1

Я использую метод выборки, как описано в интерактивных документах() для получения данных с сервера.Получение индивидуальных значений объекта JSON из обещания в файле ReactNative

Это мой код на выборку данных

let responseJson = await response.json(); 
if(response.status>=200&&response.status<300){ 
    //this.setState({error:" "}); 
    let alldata=responseJson; 
    console.log("All data "+alldata); 
}else{ 
    let error=responseJson; 
    throw error; 
} 
return responseJson; 

Я знаю, что responseJson является объектом обещания, поэтому я пытался решить это так, не работает.

let abc= this.fetchUserDate(accessToken); 
     abc.then(function(v) { 
     console.log(v.Bio+" "+v.Website+" "+typeof(v)); 
     }); 

Помимо использования v.Bio Я также попытался с помощью V [0], v [1] и так далее безрезультатно. Консоль печатает undefined. Однако когда я использую

let responseJson = await response.text(); 

Я получаю данные в виде простого текста, поэтому на стороне сервера нет ошибки. Как получить отдельные компоненты JSON? Мой JSON содержит основную информацию о профиле следующим образом:

{"bio":"I am a cool guy","website":"www.cool.com","gender":"M","avatar":"/media/images/avatar/blank.png"} 

Заранее благодарен!

+0

javascript не является игрушечным языком, как визуальный базовый, так что это CaSe SeNSiTiVe - вы говорите, что попробовали 'v.Bio +" "+ v.Website +' ... но ваши данные имеют 'bio:' и 'website: ' –

+0

' responseJson' не является объектом обещания. Вы использовали ожидание, так что это простой объект javascript. Когда вы вызываете 'fetchUserDate' (который я предполагаю, это имя функции из вашего первого образца кода, пожалуйста, уточните это), оно возвращает обещание. Вы пытались просто зарегистрировать результат этого json, к которому вы пытаетесь получить доступ? Я понимаю, что вы не определились с его полями, но можете ли вы сказать, что на самом деле вернулось? –

+0

@JaromandaX с использованием строчных символов Я получаю ту же ошибку «неопределенный неопределенный объект» в журнале – blaziken105

ответ

-1

Вы вызываете response.text(). Попробуйте вызвать response.json().

Это из документации

try { 
let responseJson = await response.json(); 
console.log(responseJson); 
     return responseJson; 
    } catch(error) { 
     console.error(error); 
    } 
} 

Вы должны использовать реакцию внутри блока Ьги, поскольку она не будет решена мгновенно.

Попробуйте выполнить console.log на объекте responseJson, чтобы увидеть, что на самом деле возвращается. Как предложил @ Jaromanda-x, используйте объекты, как вы видите, например, чувствительные к регистру.

+0

Посмотрите на первую строку кода в вопросе –

+0

Я использую блок catch try, проблема решает ответ возвращаемого объекта на получение его отдельных компонентов. – blaziken105

+0

Что вы получите, если вы console.log (responseJson)? –

Смежные вопросы