Как я могу печатать JSON с помощью node.js?

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

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

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

Я получаю

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

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

Ответ 1

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() docs на MDN, Node fs docs

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

что насчет этого?

console.table(object)

sample

Ответ 6

Я действительно столкнулся с проблемами с предоставленными решениями. Пришлось прибегнуть к этому, чтобы получить то, что я хочу:

console.log(JSON.stringify(JSON.parse(data), null, "  "));