2016-06-12 93 views
2

我構建了一個簡單的請求函數來從Yahoo Finance API獲取JSON,但是無法從JSON中提取數據。如何使用node.js從Yahoo Finance 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提取「價格」的數據,但我得到一個類型錯誤:未定義無法讀取屬性「資源」。

下面是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"    
      } 
     } 
     } 
    ] 
    } 
} 
+0

需要首先從字符串 – charlietfl

+0

解析它,當你做下一個代碼'console.log(typeof body)'什麼打印? –

+0

@DanielKrom字符串被打印。解析它到一個對象工作。謝謝charlietfl – CBar

回答

0

Request返回body作爲字符串值。

然後你應該用var stock_data = JSON.parse(body)解析它。

順便說一句,您可以使用現有的yahoo-finance實現節點,並避免重寫它自己。

+1

工作,感謝您的幫助,並指出雅虎金融實施。 – CBar