我在Node旅程的最初阶段编写了我的第一个小应用程序。我想从markitondemand.com查询股票代码并返回当前股票价格。我的查询和响应工作正常,但我无法解决如何对返回的数据进行排序以仅提取当前价格。这是我正在运行的代码:
var http = require('http');
var options = {
host: 'dev.markitondemand.com',
port: 80,
path: '/MODApis/Api/v2/Quote/jsonp?symbol=AAPL&callback=myFunction',
method: 'GET'
};
http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log(chunk);
});
}).end();
这是我从服务器收到的数据:
myFunction({"Status":"SUCCESS","Name":"Apple Inc","Symbol":"AAPL","LastPrice":100.33,"Change":-0.0799999999999983,"ChangePercent":-0.0796733393088321,"Timestamp":"Fri May 27 15:59:00 UTC-04:00 2016","MSDate":42517.6659722222,"MarketCap":549550050250,"Volume":3169443,"ChangeYTD":105.26,"ChangePercentYTD":-4.68364050921528,"High":100.47,"Low":99.26,"Open":99.49})
如何通过此搜索从" LastPrice":100.33键值对中提取100.33?我想过使用.filters方法,但是我不相信返回的是一个格式正确的数组?
谢谢!
答案 0 :(得分:4)
请求JSON而不是jsonp。这样你就可以使用JSON.parse了。 jsonp专为尝试解决CORS策略的浏览器而设计。由于您正在运行服务器,因此无需担心此类问题。
网址(通知 / json?而不是 / jsonp?):
http://dev.markitondemand.com/MODApis/Api/v2/Quote/json?symbol=AAPL
CODE:
const json = JSON.parse(chunk);
console.log(json.LastPrice);
侧面注意:
如果该API发送了分块JSON,您可能需要在解析之前累积这些块。类似的东西:
let data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
const json = JSON.parse(data);
console.log(json.LastPrice);
});