【问题标题】:How do I extract data from a Yahoo Finance JSON using node.js?如何使用 node.js 从 Yahoo Finance JSON 中提取数据?
【发布时间】:2016-10-13 03:51:23
【问题描述】:

我构建了一个简单的请求函数以从 Yahoo Finance API 获取 JSON,但无法从 JSON 中提取数据。

这是我的功能

var request = require("request");

var stock_url = "http://finance.yahoo.com/webservice/v1/symbols/FB/quote?format=json&view=%E2%80%8C%E2%80%8Bdetail";

request(stock_url, function (error, response, body) { 
    if (!error && response.statusCode == 200) {  
        var stock_data = body;
        console.log("Yahoo Finance API: ", stock_data)
        var stock_price = stock_data.list.resources[0].resource.fields.price;
        console.log("stock_price: ", stock_price);       
    };
});

返回的 JSON 成功存储在 var stock_data 中,然后我尝试使用 var stock_price = stock_data.list.resources[0].resource.fields.price 提取“价格”数据,但出现 TypeError: cannot read property 'resources' of undefined。

下面是 JSON,我已经尝试了 var stock_price 的多个衍生产品,但没有成功。非常感谢任何帮助。

{
  "list": {
    "meta": {
      "type": "resource-list",
      "start": 0,
      "count": 1
    },
    "resources": [
      {
        "resource": {
          "classname": "Quote",
          "fields": {
            "name" : "Facebook, Inc.",
            "price" : "116.620003",
            "symbol" : "FB",
            "ts" : "1465588800",
            "type" : "equity",
            "utctime" : "2016-06-10T20:00:00+0000",
            "volume" : "18510826"              
          }
        }
      }
    ]
  }
}

【问题讨论】:

  • 需要先从字符串解析成对象
  • 当你做下一个代码时console.log(typeof body)会打印什么?
  • @DanielKrom 字符串被打印。将其解析为对象有效。谢谢charlietfl

标签: javascript arrays json node.js yahoo-api


【解决方案1】:

Request 返回 body 作为字符串值。

然后你应该用var stock_data = JSON.parse(body)解析它。

顺便说一句,您可以将现有的yahoo-finance 实现用于节点并避免重写您拥有的。

【讨论】:

  • 工作,感谢您的帮助并指出 yahoo-finance 的实施。
猜你喜欢
  • 2023-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多