【问题标题】:Getting individual values of a JSON Object from a Promise in ReactNative从 React Native 中的 Promise 获取 JSON 对象的单个值
【发布时间】:2017-06-25 19:10:19
【问题描述】:

我正在使用 react native 文档 (https://facebook.github.io/react-native/docs/network.html) 中描述的 fetch 方法从服务器获取数据。

这是我获取数据的代码

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 是一个 promise 对象,所以我尝试像这样解决它,但它不起作用。

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

除了使用 v.Bio,我还尝试使用 v[0]、v[1] 等,但均无济于事。控制台打印未定义。但是,当我使用

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"}

提前致谢!

【问题讨论】:

  • javascript 不是像 Visual Basic 这样的玩具语言,所以,它是 CaSe SeNSiTiVe - 你说你尝试过 v.Bio+" "+v.Website+ ...但你的数据有 bio:website:
  • responseJson 不是一个承诺对象。您使用了 await,所以它是一个普通的 javascript 对象。当您调用fetchUserDate(我假设这是您的第一个代码示例中的函数名称,请澄清这一点)时,它确实返回了一个承诺。您是否尝试仅记录您尝试访问的 json 的结果?我知道你从它的字段中得到未定义,但你能说出实际返回的内容吗?
  • @JaromandaX 使用小写字符我在日志中得到相同的错误“未定义的未定义对象”
  • @MotiAzu fetchUserDate 是被调用的函数,我尝试记录 JSON 对象,但最终在控制台“[Object object]”中得到以下内容。当我尝试使用 .bio 或 .website 解决它时,我将其视为未定义。尽管 .text() 方法显示正在接收所有数据。也请看 Akis 的答案...
  • 请用整个函数编辑您的问题,以便我们查看问题所在。

标签: javascript json react-native promise


【解决方案1】:

你正在调用 response.text()。尝试调用 response.json()。

这是来自文档

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

您必须在 try 块中使用响应,因为它不会立即得到解决。

尝试在 responseJson 对象上执行 console.log 以查看实际返回的内容。正如@Jaromanda-x 建议的那样,使用你看到的对象,即区分大小写。

【讨论】:

  • 我正在使用 try catch 块,问题是解决返回对象的响应以获取其各个组件
  • 如果你使用 console.log(responseJson) 会得到什么?
  • 它只是在日志中说未定义
猜你喜欢
  • 2023-03-18
  • 2017-02-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
相关资源
最近更新 更多