来自Node.js的API调用不返回数组

时间:2017-12-15 16:16:44

标签: arrays node.js string api

出于测试目的,我有以下.js:

    var request = require('request');
request('https://bittrex.com/api/v1.1/public/getticker?market=BTC-LTC', function (error, body, data) {
    console.log (data);
})

这给了我以下回应:

{"success":true,"message":"","result":{"Bid":0.01697926,"Ask":0.01698700,"Last":0.01698700}}

我需要哪些数据。

但是当我尝试访问数组的某些部分时,它将不起作用:

    var request = require('request');
request('https://bittrex.com/api/v1.1/public/getticker?market=BTC-LTC', function (error, body, data) {
    console.log (data.result);
})

给出答复:

undefined

有人可以做这个吗? 我怀疑答案不是数组,而是字符串。 (data.length的答案是92)

我不需要使用请求,我只想获取data.result.Ask尽可能干净...

2 个答案:

答案 0 :(得分:0)

您的数据以JSON格式返回,这是一种字符串格式。要将其用作Javascript对象,您需要确保将其从字符串解析为Javascript对象。您可以使用JSON.parse(data)手动执行此操作,或者如果将json: true选项传递给request(),则request()会自动为您解析JSON响应:

const request = require('request');

request({json: true, uri: 'https://bittrex.com/api/v1.1/public/getticker?market=BTC-LTC'}, function (error, body, data) {
    console.log(data.result);
})

答案 1 :(得分:0)

您的 API 返回字符串而不是 JSON 对象,

您可以简单地通过 alert(data) 确认其 JSON 是否会提醒“[object object]”,然后您可以通过 data.result 或 data["result"] 读取它

但是如果它的警报纯字符串像 {"success":true,"message":"" ...} 那么你必须先把它解析成 JSON 对象然后你可以像 JSON.parse(data).result