【问题标题】:Dynamically change JSON spacing with Express.js使用 Express.js 动态更改 JSON 间距
【发布时间】:2019-02-14 02:17:43
【问题描述】:

我知道您可以将 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);
});

谢谢!

【问题讨论】:

    标签: json node.js express


    【解决方案1】:

    无论出于何种原因,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 的提示。

    【讨论】:

    • 如果您使用的是.json(),则不需要.type('application/json')
    • 已修复。谢谢,@EtienneMartin。
    【解决方案2】:

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

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

    MDN 有更多关于 JSON.stringify 的文档

    【讨论】:

      【解决方案3】:

      感谢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) 以实现可重用性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-11
        • 1970-01-01
        • 2021-04-28
        • 2015-04-14
        • 2012-12-02
        • 2021-02-11
        相关资源
        最近更新 更多