打印JSON解析对象?

Ski*_*zit 188 javascript printing parsing json

我有一个已经使用JSON解析的javascript对象JSON.parse我现在想打印对象,所以我可以调试它(函数出错了).当我做以下事情......

for (property in obj) {
    output += property + ': ' + obj[property]+'; ';
}
console.log(output);
Run Code Online (Sandbox Code Playgroud)

我列出了多个[object Object].我想知道如何打印这个以查看内容?

cHa*_*Hao 538

你知道JSON代表什么吗? JavaScript对象表示法.它为对象提供了非常好的格式.

JSON.stringify(obj) 将返回一个对象的字符串表示.

  • 我很惊讶这个答案在底部......这应该是公认的答案:-) (11认同)
  • @SuperUberDuper:...那么你现在就不会尝试构建一个字符串表示.:) (5认同)

RoT*_*oRa 117

大多数调试器控制台都支持直接显示对象.只是用

console.log(obj);
Run Code Online (Sandbox Code Playgroud)

根据您的调试器,这很可能会将控制台中的对象显示为折叠树.您可以打开树并检查对象.

  • 值得一提的是,在chrome(也许是其他浏览器)与这样的字符串组合时:`console.log("object:"+ obj)`它不显示对象,而是输出"object:[Object obj] ]". (114认同)
  • @Shahar`console.log("object:%O",obj)`(Chrome)或`console.log("object:%o",obj)`(Firefox | Safari)将允许您访问对象详细信息,请参阅下面的答案. (21认同)
  • 除了@DaveAnderson的方法之外,使用逗号将字符串与对象分开也可以起作用:`console.log("My object:",obj)` (3认同)
  • 郝的答案应该被接受 (2认同)

Dis*_*dev 53

尝试console.dir()而不是console.log()

console.dir(obj);
Run Code Online (Sandbox Code Playgroud)

MDN表示console.dir()支持:

  • FF8 +
  • IE9 +
  • 歌剧
  • 苹果浏览器

  • `console.dir()`也可用于FF8 +,Opera,Chrome和Safari:https://developer.mozilla.org/en-US/docs/Web/API/console.dir (3认同)

Luk*_*tor 42

如果你想要一个带缩进的漂亮的多行JSON,那么你可以使用JSON.stringify它的第三个参数:

JSON.stringify(value[, replacer[, space]])

例如:

var obj = {a:1,b:2,c:{d:3, e:4}};

JSON.stringify(obj, null, "    ");
Run Code Online (Sandbox Code Playgroud)

要么

JSON.stringify(obj, null, 4);
Run Code Online (Sandbox Code Playgroud)

会给你以下结果:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"
Run Code Online (Sandbox Code Playgroud)

在浏览器console.log(obj)中做得更好,但在shell控制台(node.js)中却没有.


BER*_*ine 37

要打印刚刚输入的JSON解析对象

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

,您将获得非常清晰的输出


Dav*_*son 22

使用字符串格式;

console.log("%s %O", "My Object", obj);
Run Code Online (Sandbox Code Playgroud)

Chrome具有以下格式说明符 ;

  • %s 将值格式化为字符串.
  • %d%i将值格式化为整数.
  • %f 将值格式化为浮点值.
  • %o 将值格式化为可扩展DOM元素(如"元素"面板中所示).
  • %O 将值格式化为可扩展的JavaScript对象.
  • %c 根据您提供的CSS样式格式化输出字符串.

Firefox也有String Substitions,它们有类似的选项.

  • %o输出指向JavaScript对象的超链接.单击该链接可打开检查器.
  • %d%i输出整数.格式化尚不支持.
  • %s 输出一个字符串.
  • %f输出浮点值.格式化尚不支持.

Safari有printf样式格式化程序

  • %d%i整数
  • %[0.N]f 具有N位精度的浮点值
  • %o 宾语
  • %s


mbe*_*ima 6

又好又简单:

console.log("object: %O", obj)
Run Code Online (Sandbox Code Playgroud)