javascript - Node 重新验证 : how to indent JSON output?

标签 javascript json node.js restify

使 node-restify 输出 JSON 更漂亮(即使用换行符和缩进)的正确方法是什么?

我基本上希望它输出像 JSON.stringify(object, null, 2) 这样的东西,但我看不出有什么办法可以配置 restify 来做到这一点。

在不修补 restify 的情况下实现它的最佳方法是什么?

最佳答案

您应该能够使用 formatters 实现这一点(参见 Content Negotiation ),只需为 application/json 指定自定义格式:

var server = restify.createServer({
  formatters: {
    'application/json': myCustomFormatJSON
  }
});

您可以只使用稍作修改的 original formatter 版本:

function myCustomFormatJSON(req, res, body) {
  if (!body) {
    if (res.getHeader('Content-Length') === undefined &&
        res.contentLength === undefined) {
      res.setHeader('Content-Length', 0);
    }
    return null;
  }

  if (body instanceof Error) {
    // snoop for RestError or HttpError, but don't rely on instanceof
    if ((body.restCode || body.httpCode) && body.body) {
      body = body.body;
    } else {
      body = {
        message: body.message
      };
    }
  }

  if (Buffer.isBuffer(body))
    body = body.toString('base64');

  var data = JSON.stringify(body, null, 2);

  if (res.getHeader('Content-Length') === undefined &&
      res.contentLength === undefined) {
    res.setHeader('Content-Length', Buffer.byteLength(data));
  }

  return data;
}

关于javascript - Node 重新验证 : how to indent JSON output?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10995601/

相关文章:

javascript - 如何捕获请求错误,然后打开模态,然后在模态关闭时使用 RxJS 重试

javascript - 在常量前加上 char ('+' )

java - 在 Netty 中发送 HTTP Post 请求

node.js - 如何在 res.render 函数中指定布局?

javascript - 使用聚合以及跳过和限制时获取文档总数

javascript - 在 React 中迭代表单元素数组

javascript - 接收 JSON 格式的正确数据但无法将其绑定(bind)到 jquery 数据表

java - Spring RestTemplate 在尝试反序列化对象的嵌套列表时返回 null 对象

javascript - 身份验证策略简单使用未知方案 : bearer-access-token

node.js - 如何在 Nodejs MongoDb 中进行连接连接池