【问题标题】:API call from Node.js not returning array来自 Node.js 的 API 调用不返回数组
【发布时间】:2018-05-29 21:19:43
【问题描述】:

出于测试目的,我有以下 .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...

【问题讨论】:

  • 在记录之前尝试data=JSON.parse(data)

标签: arrays node.js string api


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您的数据以 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);
    })
    

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 2022-11-04
      • 2022-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2013-03-10
      相关资源
      最近更新 更多