如何使用node.js打印JSON?

时间:2011-04-14 23:10:50

标签: json node.js

这似乎是一个已解决的问题,但我无法找到解决方案。

基本上,我读了一个JSON文件,更改了一个密钥,并将新的JSON写回到同一个文件中。一切正常,但我放松了JSON格式。所以,而不是:

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

我得到了

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

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

7 个答案:

答案 0 :(得分:708)

JSON.stringify的第三个参数定义了漂亮打印的空白插入。它可以是字符串或数字(空格数)。节点可以使用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,
}
*/

请参阅JSON.stringify() docs at MDNNode fs docs

答案 1 :(得分:205)

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

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

答案 2 :(得分:62)

如果您只想打印一个对象并且不将其导出为有效的JSON,则可以使用console.dir()

它使用语法高亮,智能缩进,从键中删除引号,并使输出尽可能美观。

const jsonString = `{"name":"John","color":"green",
                     "smoker":false,"id":7,"city":"Berlin"}`
const object = JSON.parse(jsonString)

console.dir(object, {depth: null, colors: true})

Screenshot of logged object

在引擎盖下,它是console.log(util.inspect(…))的快捷方式。 唯一的区别是它绕过了对象上定义的任何自定义inspect()函数。

答案 3 :(得分:11)

如果您不想将其存储在任何地方,而只是查看对象以进行调试。

doxygen

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

答案 4 :(得分:9)

这是什么?

console.table(object)

sample

答案 5 :(得分:0)

另一个解决方法是利用更漂亮的格式来格式化JSON。 下面的示例使用'json'解析器,但也可以使用'json5',请参见list of valid parsers

const prettier = require("prettier");
console.log(prettier.format(JSON.stringify(object),{ semi: false, parser: "json" }));

答案 6 :(得分:0)

我知道这是个老问题。但这也许可以帮助您?

JSON字符串

var jsonStr = '{ "bool": true, "number": 123, "string": "foo bar" }';

精美打印JSON

JSON.stringify(JSON.parse(jsonStr), null, 2);

缩小JSON

JSON.stringify(JSON.parse(jsonStr));