React-Native将从url获取的JSON对象分配给变量

时间:2017-05-05 20:44:07

标签: javascript json variables react-native fetch

我遇到了反应原生的JSON数据提取问题,here我需要的Json数据,我写了这段代码:

function getJsonData(){
  return fetch('http://discaricaabusivadibyte.altervista.org/IngBioSched/PROFS.json')
.then((res)=> res.json())
.then((responseJson) => { return responseJson.lista})
.catch(error => console.log(error));
}
var resp=getJsonData();
console.log("faischifo");
console.log(resp.primoanno[0]);

日志:“5173 10207 E ReactNativeJS:undefined不是对象(评估'resp.primoanno [0]')”

如果我将responseJson.lista包装到console.log函数中,我会看到我的JSON字符串已格式化。但我无法将其分配给变量。请问你能帮帮我吗? 提前谢谢

2 个答案:

答案 0 :(得分:0)

这里,getJsonData返回一个promise,所以你需要这样访问它。

getJsonData().then((data) => { console.log(data.primoanno[0] }

答案 1 :(得分:0)

正如@jaws指出的那样,你的函数getJsonData会返回一个承诺,而不是responseJson.lista的实际值。

这是一个可运行的代码段,您可能会注意到我更改了url,因为您的原始链接不是https,并且提取失败并出现以下错误:

  

混合内容:页面位于   ' ...'   是通过HTTPS加载的,但是请求了一个不安全的资源   ' ...&#39 ;.   此请求已被阻止;内容必须通过HTTPS提供。



function getJsonData() {
  return fetch('https://gist.githubusercontent.com/mamodom/90a441ac8dababa7b68015a9b506fee5/raw/69e247f03b5732b359b7e258ecae47f8e078131a/foo.json')
    .then(res => res.json())
    .then(responseJson => responseJson.lista)
    .catch(error => console.log("error", error));
}

getJsonData().then(data => {
  console.log("faischifo");
  console.log(data.primoanno[0]);
});