it-swarm.com.ru

Как мне красиво распечатать JSON с помощью node.js?

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

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

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

Я получил

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

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

374
Rajat

Третий параметр 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,
}
*/

См. JSON.stringify () документы в MDN , Узел fs документы

713
Ricardo Tomasi

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

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

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

65
adius

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

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

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

13
Sanket Berde