Як ви реєструєте вміст об’єкта JSON в Node.js?


170

Чи можна друкувати вміст об'єктів, наприклад, методів та атрибутів у 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 Чи є спосіб обмежити глибину
Ніл

у будь-якому випадку, щоб сильно роздрукувати це?
chovy

5
@chovy: щось подібне може працювати: console.log (JSON.stringify (json, null, 4));
Ерік Брандель

1
це працювало для мене: console.log("Session: %O", session); developer.mozilla.org/en-US/docs/Web/API/…
JP Lew

Працював для моєї відповіді API json! Дякую
rodrigorf


33

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


4
Це дає "утиліта не визначена". Ви повинні спочатку `var util = вимагати (" util "). Також суб-об'єкти все ще виявляються як [Object], а не рядком JSON, який їх представляє.
juanpaco

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, можливо, висить (редагується) для вас через налаштування глибини null. Інспект має вбудовану обробку для кругових посилань.
2grit

6

console.dir () - найбільш прямий спосіб.


console.dir (someJsonObject); все ще залишає для мене вкладені об'єкти недрукованими.
няраша

1
Я думаю, що він не буде висвердлювати об'єкти через прототип, і це не матиме певної рекурсії. Вам або доведеться зробити щось на зразок console.log (JSON.stringify ()) або щось більш конкретне для вашого об'єкта, якщо .dir () недостатній. Якщо у вас є більше інформації про об’єкт, можливо, можна дати більш конкретні поради.
rainabba

Це може приймати ті самі параметри, що і util.inspect. Додати {
deep


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.