我如何使用node.js漂亮地打印JSON?

这似乎是一个解决的问题,但我无法find解决scheme。

基本上,我读了一个JSON文件,更改一个键,并将新的JSON写回到同一个文件。 所有的作品,但我失去了JSON格式。所以,而不是:

{ name:'test', version:'1.0' } 

我明白了

 {name:'test',version:'1.1'} 

有没有在Node.js写格式化的JSON文件的方法?

JSON.stringify的第三个参数定义了用于漂亮打印的空白插入。 它可以是一个string或一个数字(空格的数量)。 节点可以用fs写入文件系统。 例:

 var fs = require('fs'); fs.writeFile('test.json', JSON.stringify({ a:1, b:2, c:3 }, null, 4)); /* test.json: { "a": 1, "b": 2, "c": 3, } */ 

请参阅MDN , Node fs文档中的JSON.stringify() 文档

我认为这可能是有用的…我喜欢示例代码:)

 var fs = require('fs'); var myData = { name:'test', version:'1.0' } var outputFilename = '/tmp/my.json'; fs.writeFile(outputFilename, JSON.stringify(myData, null, 4), function(err) { if(err) { console.log(err); } else { console.log("JSON saved to " + outputFilename); } }); 

你可以使用本地的“util”模块。 它使用语法突出显示,智能缩进,从键中删除引号,只是使输出变得漂亮。

 const object = JSON.parse(jsonString) const util = require('util') console.log(util.inspect(object, {depth: null, colors: true})) 

编辑:

console.dir()更简单,它是console.log(util.inspect())的快捷方式。 唯一的区别是它绕过了在对象上定义的任何自定义的inspect()函数。

 const object = JSON.parse(jsonString) console.dir(object, {depth: null, colors: true})