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 请求

node.js express环境下POST 中文时注意的地方

Node.js/ Express POST 请求正文被解析为不正确的 JSON