Как вы регистрируете содержимое объекта JSON в Node.js?


171

Можно ли напечатать содержимое объектов, например, методы и атрибуты в Node.js?

В данный момент я пытаюсь распечатать объект сеанса и получить следующее:

console.log("Session:" + session);
> Session:[object Object]

Может быть, аналогично print_r (массив) в PHP, или с помощью .toString в Java.


9
console.log("Session:" + util.inspect(session))
Рейнос

1
Для более наглядного и визуального вывода объектов взгляните на nodedump: github.com/ragamufin/nodedump
ragamufin

Ответы:


271

Попробуй это:

console.log("Session: %j", session);

Если объект может быть преобразован в JSON, это будет работать.


9
Я пытаюсь сделать это для объекта запроса, но он показывает ошибку TypeError: Преобразование круговой структуры в JSON Есть ли способ ограничить глубину
Нил

в любом случае, чтобы хорошенько напечатать это?
Чови

6
@chovy: что-то вроде этого может работать: console.log (JSON.stringify (json, null, 4));
Эрик Брандел

1
это работает для меня: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/...
JP Лью

Работал на мой ответ API JSON! Спасибо
Родригорф


33

Чтобы получить вывод, более похожий на исходный код, который console.log(obj)я обычно использую console.log('Status: ' + util.inspect(obj))(JSON немного отличается).


4
Это дает "Утилита не определена". Сначала вы должны `var util = require (" util "). Кроме того, подобъекты по-прежнему имеют вид [Object], а не строку JSON, которая их представляет.
Джуанпако

13
Чтобы снять ограничение по глубине, используйте:require('util').inspect(obj, {depth:null})
Lapo

25

Это будет работать с любым объектом:

    var util = require("util");
    console.log(util.inspect(myObject, {showHidden: false, depth: null}));

2
Это прекрасно работает для объектов ошибок. Ни одно из их свойств не проявляется в других решениях.
Крис

1
Это просто висит для меня. Я думаю, что циклические ссылки в объекте сбивают его
Ричард

@Richard это, вероятно, зависает (ed) для вас из-за опции глубины, установленной на null. Inspect имеет встроенную обработку для циклических ссылок.
2

6

console.dir () - самый прямой путь.


console.dir (someJsonObject); все еще оставляет вложенные объекты без печати, для меня.
няраша

1
Я думаю, что он не будет углубляться в объекты через их прототип и не будет иметь дело с определенной рекурсией. Вам нужно будет сделать что-то вроде console.log (JSON.stringify ()) или что-то более специфичное для вашего объекта, если .dir () недостаточно. Если у вас есть больше информации об объекте, возможно, можно дать более конкретный совет.
Rainabba

Может принимать те же параметры, что и util.inspect. Добавить {глубину:
ноль


0

Это будет для большинства объектов для вывода в консоли nodejs

var util = require('util')
function print (data){
  console.log(util.inspect(data,true,12,true))
  
}

print({name : "Your name" ,age : "Your age"})

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.