How can I pretty-print JSON using node.js?

前端 未结 6 1027
心在旅途
心在旅途 2020-11-28 00:22

This seems like a solved problem but I am unable to find a solution for it.

Basically, I read a JSON file, change a key, and write back the new JSON to the same file

相关标签:
6条回答
  • 2020-11-28 00:51

    If you don't want to store this anywhere, but just view the object for debugging purposes.

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

    You can change the third parameter to adjust the indentation.

    0 讨论(0)
  • 2020-11-28 00:52

    I think this might be useful... I love example code :)

    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);
        }
    }); 
    
    0 讨论(0)
  • 2020-11-28 00:53

    what about this?

    console.table(object)
    

    0 讨论(0)
  • 2020-11-28 00:53

    Another workaround would be to make use of prettier to format the JSON. The example below is using 'json' parser but it could also use 'json5', see list of valid parsers.

    const prettier = require("prettier");
    console.log(prettier.format(JSON.stringify(object),{ semi: false, parser: "json" }));
    
    0 讨论(0)
  • 2020-11-28 00:57

    JSON.stringify's third parameter defines white-space insertion for pretty-printing. It can be a string or a number (number of spaces). Node can write to your filesystem with fs. Example:

    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,
    }
    */
    

    See the JSON.stringify() docs at MDN, Node fs docs

    0 讨论(0)
  • 2020-11-28 00:58

    If you just want to pretty print an object and not export it as valid JSON you can use console.dir().

    It uses syntax-highlighting, smart indentation, removes quotes from keys and just makes the output as pretty as it gets.

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

    Under the hood it is a shortcut for console.log(util.inspect(…)). The only difference is that it bypasses any custom inspect() function defined on an object.

    0 讨论(0)
提交回复
热议问题