Как мне красиво распечатать JSON с помощью node.js? - PullRequest
380 голосов
/ 15 апреля 2011

Это похоже на решенную проблему, но я не могу найти решение для нее.

По сути, я читаю файл JSON, меняю ключ и записываю новый JSON в тот же файл.Все работает, но я теряю форматирование JSON. Так, вместо:

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

Я получаю

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

Есть ли способ в Node.js написать хорошо отформатированный JSON в файл

Ответы [ 4 ]

721 голосов
/ 15 апреля 2011
Третий параметр

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 () в MDN , Узел fs docs

206 голосов
/ 27 июля 2012

Я думаю, что это может быть полезно ... Мне нравится пример кода:)

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);
    }
}); 
67 голосов
/ 14 ноября 2015

Если вы хотите просто распечатать объект и не экспортировать его как действительный 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(), определенную для объекта.

14 голосов
/ 28 сентября 2018

Если вы не хотите хранить это где-либо, а просто просматриваете объект в целях отладки.

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

Вы можете изменить третий параметр, чтобы настроить отступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...