我有一个使用JSON解析过的javascript对象,JSON.parse
现在我想打印该对象,以便对其进行调试(该函数出了点问题)。当我执行以下操作时...
for (property in obj) {
output += property + ': ' + obj[property]+'; ';
}
console.log(output);
我列出了多个[object Object]。我想知道如何打印此内容以查看内容?
我有一个使用JSON解析过的javascript对象,JSON.parse
现在我想打印该对象,以便对其进行调试(该函数出了点问题)。当我执行以下操作时...
for (property in obj) {
output += property + ': ' + obj[property]+'; ';
}
console.log(output);
我列出了多个[object Object]。我想知道如何打印此内容以查看内容?
Answers:
大多数调试器控制台都支持直接显示对象。只需使用
console.log(obj);
根据您的调试器,这很可能会将对象在控制台中显示为折叠的树。您可以打开树并检查对象。
console.log("object: " + obj)
它不显示对象,而是输出“ object:[Object obj]”。
console.log("object: %O", obj)
(Chrome)或 console.log("object: %o", obj)
(Firefox | Safari)可以让您访问对象的详细信息,请参阅下面的答案。
console.log("My object: ", obj)
您知道JSON代表什么吗? JavaScript对象符号。它为对象提供了很好的格式。
JSON.stringify(obj)
将给您返回对象的字符串表示形式。
console.dir()
还可以在FF8 +,Opera,Chrome和Safari中使用:developer.mozilla.org/en-US/docs/Web/API/console.dir
如果您想要带缩进的漂亮多行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.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));
我不知道它是如何从未正式制作过的,但是我json
为console
对象添加了自己的方法,以便于打印带字符串的日志:
观察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