NodeJS:从Web请求中读取JSON数组

时间:2015-06-22 04:50:10

标签: javascript arrays json node.js

这可能是一个n00b问题,但我正在尝试理解提供给我的nodeJS代码,该代码据说可以在生产中使用。这是一个我想要使用的API,但由于无法理解请求中的JSON字符串而卡住了。

var server = {};
server.create = function _create(req) {
    //req= JSON.parse(req);
    req.forEach(function (origReq) {
        console.log(origReq);
    });
}

var req = "[{\"id\":\"1\"},{\"id\":\"2\"}]";
server.create(req);

运行这个,我收到此错误,因为" req"未被标识为JS对象/数组,并且.forEach在字符串上不可用,它是:

**

  

TypeError:undefined不是函数

**

可以理解,如果"评论"代码行是未注释的,字符串被解析为正确的JS数组,它可以正常工作。

如果请求具有正确的内容类型" application / json",默认情况下是否无法理解/解析? 没有parse语句的代码可能如何工作(parse语句是由我介绍的,并且在工作API的原始代码部分中不存在)。可能节点模块(通常称为服务器模块)应该从传入的头信息处理这个?

如果我遗漏了一些基本的东西并感谢您的所有投入,我表示歉意。

1 个答案:

答案 0 :(得分:1)

内容类型"application/json"不会被检索为JavaScript对象。您正在检索纯文本(字符串)。就像"text/HTML""text/plain"内容类型一样。

调用JSON.parse(req)是关键,因为它会将此字符串解析为JavaScript对象。

修改

某些框架(如Angular.js)将读取响应的content-type并将响应解析为JavaScript对象。但是,“请求”节点模块(您可能正在使用)将不会为您解析响应。你必须自己做。