使用Node查询从API查询返回的JSON中的项目

我在我的Node旅程的开始,并写我的第一个小应用程序。 我想从markitondemand.com查询股票代码并返回当前股票价格。 我已经得到了查询和响应工作正常,但我不能解决如何sorting通过返回的数据提取当前价格。 这是我正在运行的代码:

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}) 

我如何通过search从“LastPrice”中提取100.33:100.33键值对? 我想使用.filters方法,但我不相信是什么被返回是一个格式正确的数组?

谢谢!

请求JSON而不是jsonp。 这样你可以使用JSON.parse。 jsonp是专为试图解决CORS策略的浏览器而devise的。 既然你正在运行一个服务器,你不需要担心这样的事情。

URL(notice / json?而不是/ jsonp? ):

 http://dev.markitondemand.com/MODApis/Api/v2/Quote/json?symbol=AAPL 

码:

 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); });