如何使用 node.js 从 Yahoo Finance JSON 中提取数据?
How do I extract data from a Yahoo Finance JSON using node.js?
我构建了一个简单的请求函数以从 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
提取 "price" 数据,但出现类型错误:无法读取 属性 'resources' 未定义。
下面是 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"
}
}
}
]
}
}
Request returns body
作为字符串值。
然后您应该用 var stock_data = JSON.parse(body)
解析它。
顺便说一句,您可以使用现有的 yahoo-finance 节点实现,避免自己重写它。
我构建了一个简单的请求函数以从 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
提取 "price" 数据,但出现类型错误:无法读取 属性 'resources' 未定义。
下面是 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"
}
}
}
]
}
}
Request returns body
作为字符串值。
然后您应该用 var stock_data = JSON.parse(body)
解析它。
顺便说一句,您可以使用现有的 yahoo-finance 节点实现,避免自己重写它。