这可能是一个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的原始代码部分中不存在)。可能节点模块(通常称为服务器模块)应该从传入的头信息处理这个?
如果我遗漏了一些基本的东西并感谢您的所有投入,我表示歉意。
答案 0 :(得分:1)
内容类型"application/json"
不会被检索为JavaScript对象。您正在检索纯文本(字符串)。就像"text/HTML"
或"text/plain"
内容类型一样。
调用JSON.parse(req)
是关键,因为它会将此字符串解析为JavaScript对象。
修改强>
某些框架(如Angular.js)将读取响应的content-type并将响应解析为JavaScript对象。但是,“请求”节点模块(您可能正在使用)将不会为您解析响应。你必须自己做。