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

使用Express.js动态更改JSON间距,json,node.js,express,Json,Node.js,Express,我知道您可以将Express配置为输出漂亮的JSON(app.set(“JSON spaces”,2))或缩小的JSON(app.set(“JSON spaces”,0)),但有没有办法在特定响应上覆盖此全局设置 例如,如果我将json空格设置为0,我可以执行如下操作: app.get("/foo", function(req,res) { res.json({"a":"b"}, 2); }); 谢谢 一个简单的方法是自己使用res.send并格式化JSON: app.get("/foo

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

例如,如果我将
json空格
设置为
0
,我可以执行如下操作:

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

谢谢

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

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

MDN有更多关于

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

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

MDN有更多关于

的文档,谢谢您的回答!根据你的答案,我不得不做一个修改,让它正常工作:

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

我最终创建了一个函数
sendprity(res,data)
,以实现可重用性

谢谢你的回答!根据你的答案,我不得不做一个修改,让它正常工作:

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

我最终创建了一个函数
sendprity(res,data)
,以实现可重用性

无论出于什么原因,Stringify都不适合我。但是设置
json空间
确实有效

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

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


谢谢你的提示。

无论出于什么原因,Stringify都不适合我。但是设置
json空间
确实有效

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

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


感谢您提供的提示。

如果您使用的是
.json()
,则不需要键入('application/json')。谢谢,@EtienneMartin。如果您使用的是
.json()
,则不需要
.type('application/json')
。已修复。谢谢你,马丁。