响应JSON对象还是JSON.stringify?

dop*_*ner 5 json node.js express

假设我想返回JSON内容

var content = {
  a: 'foo',
  b: 'bar'
};
Run Code Online (Sandbox Code Playgroud)

返回JSON数据的最佳做法是什么?

A)按原样返回对象; 即res.end(content)

B)JSON.stringify(content)然后打电话JSON.parse(content)给客户?

Ber*_*ard 6

如果您使用express发送响应,则res.json可以直接将对象作为application/json编码响应发送.

app.get('/route/to/ressource', function(req, res){
  var oMyOBject = {any:'data'};

   res.json(oMyOBject);
});
Run Code Online (Sandbox Code Playgroud)

  • 您不需要设置类型,因为`.send`会为您完成,如果您想要格式化输出,您可以执行`app.set('json spaces','\ t')`. (3认同)

Sci*_*ter 5

客户端必须始终发送一个字符串。这就是协议所说的。毕竟,HTTP 是一个范围广泛的协议,并不是所有语言都支持 JSON 对象,更不用说 JavaScript 数据了。

如果您不将其转换为 JSON 字符串,那么纯 Node 可能只会将其作为 发送[object Object],我确定这不是您的意图。

如前所述,Express 允许您发送一个实际的 JS 对象,并为您转换 JSON 字符串。或者,您可以手动转换它。