这个问题似乎已经解决了,但我找不到解决办法。

基本上,我读取一个JSON文件,更改一个键,然后将新的JSON写回相同的文件。所有工作,但我松散的JSON格式。所以,与其:

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

我得到

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

在Node.js中是否有一种方法可以将格式良好的JSON写入文件?


当前回答

如果你不想把它存储在任何地方,只是为了调试目的而查看对象。

console.log(JSON.stringify(object, null, "  "));

您可以更改第三个参数来调整缩进。

其他回答

JSON。Stringify的第三个参数定义了用于漂亮打印的空白插入。它可以是字符串或数字(空格数)。Node可以使用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 docs中的JSON.stringify()文档

如果你不想把它存储在任何地方,只是为了调试目的而查看对象。

console.log(JSON.stringify(object, null, "  "));

您可以更改第三个参数来调整缩进。

这个呢?

console.table(object)

如果prettify是新行上的名称值对,那么在stringify中指定空格数对我不起作用,唯一对我起作用的是

await fs.promises.writeFile('testdataattr.json',JSON.stringify(datatofile, null,'\r\n'),'utf8') ;

我想这可能有用……我喜欢示例代码:)

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);
    }
});