使用节点在API查询返回的JSON中搜索项

使用节点在API查询返回的JSON中搜索项,json,node.js,Json,Node.js,我正处于我的节点旅程的开始,正在编写我的第一个微型应用程序。我想从markitondemand.com查询股票代码并返回当前股票价格。我的查询和响应工作得很好,但我不知道如何对返回的数据进行排序以提取当前价格。以下是我正在运行的代码: var http = require('http'); var options = { host: 'dev.markitondemand.com', port: 80, path: '/MODApis/Api/v2/Quote/jsonp?symbo

我正处于我的节点旅程的开始,正在编写我的第一个微型应用程序。我想从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方法,但我不相信返回的是格式正确的数组


谢谢大家!

请求JSON而不是jsonp。这样就可以使用JSON.parse。jsonp是为试图绕过CORS策略的浏览器而设计的。因为您正在运行服务器,所以不必担心这些事情

URL(注意/json?而不是/jsonp?):

代码:

旁注:

如果该API发送分块JSON,您可能需要在解析之前累积分块。比如:

  let data = '';

  res.on('data', function (chunk) {
    data += chunk;  
  });

  res.on('end', function () {
    const json = JSON.parse(data);
    console.log(json.LastPrice);
  });

请求JSON而不是jsonp。这样就可以使用JSON.parse。jsonp是为试图绕过CORS策略的浏览器而设计的。因为您正在运行服务器,所以不必担心这些事情

URL(注意/json?而不是/jsonp?):

代码:

旁注:

如果该API发送分块JSON,您可能需要在解析之前累积分块。比如:

  let data = '';

  res.on('data', function (chunk) {
    data += chunk;  
  });

  res.on('end', function () {
    const json = JSON.parse(data);
    console.log(json.LastPrice);
  });

直接使用块而不确保响应结束是不安全的。解释并给出备选方案。直接使用块而不确保响应结束是不安全的。解释并给出备选方案。之所以这样做,是因为在javascript
a={“abc”:1中,“def”:2}
是一个可以执行
a.abc
a[“abc”]
的对象。非常感谢!我还将看看我是如何按照你和郊狼508的建议处理块的。再次感谢!这之所以有效,是因为在javascript
a={“abc”:1中,“def”:2}
是一个可以执行
a.abc
a[“abc”]
的对象。非常感谢!我还将看看我是如何按照你和郊狼508的建议处理块的。再次感谢!
  let data = '';

  res.on('data', function (chunk) {
    data += chunk;  
  });

  res.on('end', function () {
    const json = JSON.parse(data);
    console.log(json.LastPrice);
  });