Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点还原:如何缩进JSON输出?_Javascript_Json_Node.js_Restify - Fatal编程技术网

Javascript 节点还原:如何缩进JSON输出?

Javascript 节点还原:如何缩进JSON输出?,javascript,json,node.js,restify,Javascript,Json,Node.js,Restify,让节点更精确地恢复输出JSON(即使用换行符和缩进)的正确方法是什么 我基本上希望它输出类似于JSON的东西。stringify(object,null,2)就可以了,但我认为没有办法配置resify来实现这一点 在不修补restify的情况下实现此功能的最佳方法是什么?您应该能够使用格式化程序实现此功能(请参阅),只需为应用程序/json指定自定义设置即可: var server = restify.createServer({ formatters: { 'application

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

我基本上希望它输出类似于
JSON的东西。stringify(object,null,2)
就可以了,但我认为没有办法配置resify来实现这一点


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

您应该能够使用
格式化程序实现此功能(请参阅),只需为
应用程序/json指定自定义设置即可:

var server = restify.createServer({
  formatters: {
    'application/json': myCustomFormatJSON
  }
});
您只需使用稍微修改过的版本:


我相信这是一个更好的解决方案,代码很简单,检查程序运行时没有任何错误,似乎没有任何问题:


太好了,这很有效!但是,需要注意的是,您需要通过调用response.contentType='application/JSON'将内容类型显式设置为JSON。否则,RealPress会将数据作为八位字节流发送出去。
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;
}
var server = restify.createServer({
    formatters: {
        'application/json': function(req, res, body, cb) {
            return cb(null, JSON.stringify(body, null, '\t'));
        }
    }
});