82

我正在使用 Node.js 将 JSON 发布到 PostBin,但数据格式错误(如您在此处看到的:http ://www.postbin.org/1cpndqw )。

这是我用于 testT 的代码:

var http = require('http');

var options = {
  host: 'www.postbin.org',
  port: 80,
  path: '/1cpndqw',
  method: 'POST'
};

var req = http.request(options, function(res) {
  console.log('STATUS: ' + res.statusCode);
  console.log('HEADERS: ' + JSON.stringify(res.headers));
  res.setEncoding('utf8');
  res.on('data', function (chunk) {
    console.log('BODY: ' + chunk);
  });
});

req.write(JSON.stringify({ a:1, b:2, c:3 }, null, 4));
req.end();
4

4 回答 4

351

使用JSON.stringify(object, null, 4)where4是用作缩进单位的空格数。"\t"如果你想要标签,你也可以使用。这实际上是 ECMAScript 5 规范的一部分,并记录在 MDN 上

于 2012-06-30T17:25:39.963 回答
10

嗯,主要是因为 JSON 不关心它是如何格式化的,而且你自己也没有进行任何格式化。你需要的是一个 javascript prettyprinter,如果你在乎的话,但第一个问题是“你为什么在乎?”

这是来自 Javascript 食谱的漂亮打印代码。

实际上这里有一大堆不同的例子。

更新

好的,现在它正在做你想做的事,让我们问问你是否做对了。正如一些人指出的那样,您不需要传输那些额外的换行符和制表符或空格。效率成本很小,可能在 2-5% 左右,但你永远不知道什么时候可能需要几个百分点。

另一方面,我完全同意将 JSON 输出读取为漂亮打印的文本要方便得多。但是还有另一种解决方案——您可能仍在使用浏览器查看这些结果,因此不要使用漂亮的打印来传输,而是使用客户端的漂亮打印机。我在 Firefox 中使用JSONView for ChromeJSONView。许多调试器也会为您漂亮地打印 JSON 结果。

于 2011-04-17T14:15:47.983 回答
7

我使用了一个我发现可行的两步过程:

var output = JSON.parse(insert_json_here);
var print_to_file = JSON.stringify(output, null, "\t")
于 2017-03-29T20:18:27.630 回答
2

您应该查看underscore-cli - 它是一个用于检查和处理 JSON 数据的命令行工具。

于 2012-04-29T21:20:57.850 回答