NodeJS未定义的JSON对象

时间:2017-12-26 21:19:25

标签: javascript json node.js object undefined

刚发布一个问题,因为我在这里看到了一些其他类似的问题,但没有一个方法看起来对我有用。

我是NodeJS的新手,并且正在使用API​​请求数据。对于我在这里的测试我只是试图根据用户提示的输入来提取股票价格。

这很好,但对象

这是我用来尝试使这项工作的代码:

 prompt.start();
 prompt.get(['coin'], function (err, result) {

   request({url: `https://min-api.cryptocompare.com/data/price?fsym=${result.coin}&tsyms=BTC,USD`, json:true}, function(err, res, json) {
     if (err) {
       throw err;
     }
     console.log(json);
     var json = JSON.stringify(json);
     var string2 = JSON.parse(json);
     console.log(string2.btc_price);
     console.log(json);
   });
   console.log('Retrieving: ' + result.coin);
 });

API请求有效,但它使用我的3个控制台日志返回看起来像这样的JSON:

    { set_attributes: { btc_price: 1, usd_price: 15839.35 } }
    undefined 
    {"set_attributes":{"btc_price":1,"usd_price":15839.35}}  --  (Stringify'd response)

我希望能够提取btc_price& usd_price作为变量,我已经尝试了几种不同的方法,并且无法弄清楚哪里出错了。任何帮助将不胜感激!

干杯,

Ĵ

2 个答案:

答案 0 :(得分:2)

当您尝试提取btc_price属性时,它实际上是嵌套的,因此您的第二个控制台应该显示console.log(string2.set_attributes.btc_price);

答案 1 :(得分:0)

axios 在Github上有更多明星,在Github上有更多关注者和更多分叉。

Features

  • 从浏览器制作XMLHttpRequests
  • 从node.js
  • 发出http请求
  • 支持Promise API
  • 拦截请求和响应
  • 转换请求和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防范XSRF

使用async / await

  // Make a request for a user with a given ID
  var preload = null;
  async function getPrice(symbol) {
        preload = await axios.get('https://min-api.cryptocompare.com/data/price?fsym=${symbol}&tsyms=BTC,USD')
  .then(function (response) {
        preload = response.data;
  })
  .catch(function (error) {
        console.log(error);
  });
  return `preload.BTC = ${preload.BTC}; preload.BTC = ${preload.BTC}`;
  };
  getPrice('ETH');
  // return preload.BTC = 0.04689; preload.USD = 742.85