编程语言
首页 > 编程语言> > javascript – node-restify:如何缩进JSON输出?

javascript – node-restify:如何缩进JSON输出?

作者:互联网

使节点更好地输出JSON的正确方法是什么(即使用换行符和缩进)?

我基本上希望它输出像JSON.stringify(object,null,2)这样的东西,但我认为没有办法配置restify来做到这一点.

没有补丁修改的最佳方法是什么?

解决方法:

您应该能够使用格式化程序实现这一点(参见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,json,node-js,restify
来源: https://codeday.me/bug/20190725/1538540.html