打印JSON解析对象?

2020/10/16 09:21 · javascript ·  · 0评论

我有一个使用JSON解析过的javascript对象,JSON.parse现在我想打印该对象,以便对其进行调试(该函数出了点问题)。当我执行以下操作时...

for (property in obj) {
    output += property + ': ' + obj[property]+'; ';
}
console.log(output);

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

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

console.log(obj);

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

您知道JSON代表什么吗? JavaScript对象符号它为对象提供了很好的格式。

JSON.stringify(obj) 将给您返回对象的字符串表示形式。

尝试console.dir()代替console.log()

console.dir(obj);

MDN表示console.dir()支持:

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

如果您希望使用带有缩进的漂亮的多行JSON,则可以使用JSON.stringify其第3个参数:

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

例如:

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

JSON.stringify(obj, null, "    ");

要么

JSON.stringify(obj, null, 4);

将给您以下结果:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"

在浏览器console.log(obj)中甚至可以做得更好,但是在Shell控制台(node.js)中则不能。

只需输入即可打印JSON解析对象

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


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

使用字符串格式;

console.log("%s %O", "My Object", obj);

Chrome具有以下格式说明符

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

Firefox也有String Substitions,它们具有相似的选项。

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

Safari具有printf样式格式化程序

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

简单好看:

console.log("object: %O", obj)

只需使用

console.info("CONSOLE LOG : ")
console.log(response);
console.info("CONSOLE DIR : ")
console.dir(response);

并且您将在chrome控制台中获得此信息:

CONSOLE LOG : 
facebookSDK_JS.html:56 Object {name: "Diego Matos", id: "10155988777540434"}
facebookSDK_JS.html:57 CONSOLE DIR : 
facebookSDK_JS.html:58 Objectid: "10155988777540434"name: "Diego Matos"__proto__: Object

简单的功能,用于警告对象或数组的内容。

使用数组或字符串或对象来警告该内容,以调用此函数。

功能

function print_r(printthis, returnoutput) {
    var output = '';

    if($.isArray(printthis) || typeof(printthis) == 'object') {
        for(var i in printthis) {
            output += i + ' : ' + print_r(printthis[i], true) + '\n';
        }
    }else {
        output += printthis;
    }
    if(returnoutput && returnoutput == true) {
        return output;
    }else {
        alert(output);
    }
}

用法

var data = [1, 2, 3, 4];
print_r(data);

以下代码将在警报框中显示完整的json数据

var data= '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';

json = JSON.parse(data);
window.alert(JSON.stringify(json));

如果要调试,为什么不使用控制台调试

window.console.debug(jsonObject);

如果您在服务器上使用js进行工作,则仅需进行一点点体操就可以了。这是我的ppos(服务器上漂亮的打印件):

ppos = (object, space = 2) => JSON.stringify(object, null, space).split('\n').forEach(s => console.log(s));

这在创建我在编写服务器代码时可以实际读取的内容方面起到了很大的作用。

我不知道它是如何从未正式制作过的,但是我jsonconsole对象添加了自己的方法,以便于打印带字符串的日志:

观察javascript中的对象(非原始对象)有点像量子力学。您“测量”的可能不是真实状态,该状态已经改变。

console.json = console.json || function(argument){
    for(var arg=0; arg < arguments.length; ++arg)
        console.log(  JSON.stringify(arguments[arg], null, 4)  )
}

// use example
console.json(   [1,'a', null, {a:1}], {a:[1,2]}    )

很多时候需要查看对象的字符串化版本,因为按原样打印它(原始对象)将打印该对象的“实时”版本,该版本会随着程序的进行而发生变化,并且不会镜像该对象的状态。在记录的时间点,例如:

var foo = {a:1, b:[1,2,3]}

// lets peek under the hood
console.log(foo) 

// program keeps doing things which affect the observed object
foo.a = 2
foo.b = null
本文地址:http://javascript.askforanswer.com/dayinjsonjiexiduixiang.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!