使用Express.js动态更改JSON间距

时间:2014-12-12 15:25:54

标签: json node.js express

我知道您可以将Express配置为输出漂亮的JSON(app.set("json spaces", 2))或缩小的JSON(app.set("json spaces", 0)),但有没有办法覆盖特定响应的全局设置?

例如,如果我将json spaces设置为0,我可以打印出类似的内容:

app.get("/foo", function(req,res) {
   res.json({"a":"b"}, 2);
});

谢谢!

3 个答案:

答案 0 :(得分:3)

无论出于何种原因,Stringify都没有为我工作。但设置json spaces确实有效。

app.set('json spaces', 2);

app.get("*", async (request, response) => {
  ...
  response.json(m);
}

http://expressjs.com/en/api.html#app.set

感谢loganfsmyth提示。

答案 1 :(得分:1)

一种简单的方法是使用res.send并自己格式化JSON:

app.get("/foo", function(req,res) {
   res.send(JSON.stringify({"a":"b"}, null, 2));
});

MDN在JSON.stringify

上有更多文档

答案 2 :(得分:0)

感谢您的回答wjohnsto!基于你的答案,并在the response.js code中进行挖掘,我不得不进行一次修改以使其正常工作:

app.get("/foo", function(req, res) {
   res
     .set("Content-type", "application/json; charset=utf-8")
     .send(JSON.stringify({"a":"b"}, null, 2));
});

我最终为可重用性创建了一个函数sendPretty(res, data)