Как я могу печатать 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, " "));