我知道您可以将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);
});
谢谢!
答案 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)
。