如何在Node.js中记录JSON对象的内容?

Jac*_*ack 165 json node.js

是否可以在Node.js中打印对象内容,例如方法和属性?

目前我正在尝试打印会话对象并获得以下内容:

console.log("Session:" + session);
> Session:[object Object]
Run Code Online (Sandbox Code Playgroud)

也许与PHP中的print_r(数组)类似,或者在Java中使用.toString.

小智 266

试试这个:

console.log("Session: %j", session);
Run Code Online (Sandbox Code Playgroud)

如果对象可以转换为JSON,那将是有效的.

  • 我试图为请求对象执行此操作但它显示错误TypeError:将循环结构转换为JSON是否有任何方法来限制深度 (9认同)
  • @chovy:这样的东西可能有用:console.log(JSON.stringify(json,null,4)); (5认同)

ccg*_*ett 121

function prettyJSON(obj) {
    console.log(JSON.stringify(obj, null, 2));
}

// obj -> value to convert to a JSON string
// null -> (do nothing)
// 2 -> 2 spaces per indent level
Run Code Online (Sandbox Code Playgroud)

MDN上的JSON.stringify

  • 到目前为止最好的答案+1! (2认同)

lap*_*apo 33

要使输出更类似于console.log(obj)我通常使用的原始输出console.log('Status: ' + util.inspect(obj))(JSON略有不同).

  • 要删除深度限制,请使用:`require('util').inspect(obj,{depth:null})` (13认同)
  • 这给出了"util未定义".你必须先`var util = require("util").此外,子对象仍然是[Object]而不是表示它们的JSON字符串. (4认同)

Mar*_*lsi 24

这适用于任何对象:

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

  • 这适用于错误对象.其他解决方案中没有出现任何属性. (2认同)

rai*_*bba 6

console.dir()是最直接的方式.