Node.js/ Express POST 请求正文被解析为不正确的 JSON
Posted
技术标签:
【中文标题】Node.js/ Express POST 请求正文被解析为不正确的 JSON【英文标题】:Node.js/ Express POST Request Body Parsed into Incorrect JSON 【发布时间】:2015-05-31 10:45:12 【问题描述】:我有一个 Polymer core-ajax
组件将一些数据发送到 Node.js 服务器。数据正在正确发送(我可以使用 Go Web 服务器对其进行解析),但 Node 将其解析为字符串化主体,即 JSON 对象中空白字符串的键:
'"count":-1,"uid":1': ''
这是从 Polymer 发送请求的代码:
sendCount: function(change)
console.log("Sending...");
console.log(JSON.stringify("count": change, "uid": this.uid));
// ^ This prints: "count":-1,"uid":1
this.$.ajax.body = JSON.stringify("count": change, "uid": this.uid);
this.$.ajax.go();
这是节点代码:
app.post("/post", function(req, res)
console.log(res.headers);
console.log(req.body); // Prints '"count":-1,"uid":1': ''
res.setHeader('Content-Type', 'application/json');
res.end(JSON.stringify(req.body));
);
当我收到响应时,它返回了格式错误的 JSON。
我应该如何正确解析 Node 中的 JSON?
还有:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded( extended: false ));
【问题讨论】:
设置ajax.body
等于对象,而不是JSON.stringify(object)
。
您是否设置了core-ajax
属性contentType="application/json"
和handleAs="json"
?我这样做并在将其设置为 ajax.body 之前对 JSON 进行了字符串化,它适用于节点。
@idleherb 完成了。想要将其作为答案提交?
很高兴能帮上忙,谢谢伙计!
【参考方案1】:
设置core-ajax
属性contentType="application/json"
和handleAs="json"
,并在设置为ajax.body
之前对JSON进行字符串化。
【讨论】:
以上是关于Node.js/ Express POST 请求正文被解析为不正确的 JSON的主要内容,如果未能解决你的问题,请参考以下文章
如何从 node.js Express 发送 POST 请求?
如何在 express node.js POST 请求中接收 JSON?
如何发送 POST 请求以响应 node.js Express?
使用颤振客户端向 node.js express api 发出 post 请求