【问题标题】:API is returning functionAPI 正在返回函数
【发布时间】:2014-04-27 10:04:19
【问题描述】:

我正在尝试从 node.js 中的 API 获取分数,但我得到了一个看起来像函数的响应。我不确定如何从这个函数中获取 JSON 数据。

var req = http.request(options, function(res){
    res.setEncoding('utf8');
    res.on('data', function(data){
        console.log(data);
    });
});

响应是...

shsMSNBCTicker.loadGamesData({
"sport": "NBA", 
"period": "20140426", 
"games": [""]
});

“游戏”中有一堆数据,但这并不重要,而且会占用太多空间。对于这个例子,假设我想获得“运动”;这将返回“NBA”。

【问题讨论】:

  • 我认为这是 JSONP 响应。

标签: javascript node.js api


【解决方案1】:

您收到的回复是JSONP。通常,API 将提供 JSON 和 JSONP 可配置参数。但是,既然您在这里提问,我将假设您无法控制请求(也许给 API 作者的礼貌信息可能会有所帮助)。

您可以提供响应中使用的命名空间并评估响应。但由于这是 Node 而不是浏览器,这个想法充其量是愚蠢的。相反,我建议将响应手动操作为 JSON:

JSON.parse(response.replace(/^[^\(]*\(/, '').replace(/\);$/, ''));

【讨论】:

  • 我能够删除“JSONP”并在请求的 url 中使用“JSON”。它给了我一个我正在寻找的 JSON。此外,在来自 API 的响应中的 games 数组中是 XML。您是否知道任何从 XML 标记数组中提取数据的好教程?
  • @CollinMcGuire NPM 可能有很多 XML 解析器。谷歌发现了这个:github.com/Leonidas-from-XIV/node-xml2js
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多