刚发布一个问题,因为我在这里看到了一些其他类似的问题,但没有一个方法看起来对我有用。
我是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作为变量,我已经尝试了几种不同的方法,并且无法弄清楚哪里出错了。任何帮助将不胜感激!
干杯,
Ĵ
答案 0 :(得分:2)
当您尝试提取btc_price
属性时,它实际上是嵌套的,因此您的第二个控制台应该显示console.log(string2.set_attributes.btc_price);
答案 1 :(得分:0)
axios 在Github上有更多明星,在Github上有更多关注者和更多分叉。
使用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