JSON.parse
を使ってJSONで解析されたjavascriptオブジェクトを手に入れました。それをデバッグできるように、今度はオブジェクトを印刷したいと思います(関数に何か問題があります)。次のようにすると….
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()
は以下によってサポートされていると言います。
インデント付きのきれいな複数行のJSONが必要な場合は、3番目の引数とともにJSON.stringify
を使用できます。
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)
はさらに良い仕事をしますが、シェルコンソール(node.js)ではそうではありません。
jSON解析済みオブジェクトを印刷するには、次のように入力します。console.log( JSON.stringify(data, null, " ") );
を入力すると、非常に明確な出力が得られます。
文字列フォーマットを使用してください。
console.log("%s %O", "My Object", obj);
Chromeには、 フォーマット指定子 があり、次のとおりです。
%s
値を文字列としてフォーマットします。%d
または%i
値を整数としてフォーマットします。%f
値を浮動小数点値としてフォーマットします。%o
要素パネルのように、値を展開可能なDOM要素としてフォーマットします。%O
値を拡張可能なJavaScriptオブジェクトとしてフォーマットします。%c
指定したCSSスタイルに従って出力文字列をフォーマットします。Firefoxには 文字列置換 もありますが、これらにも同様のオプションがあります。
%o
JavaScriptオブジェクトへのハイパーリンクを出力します。リンクをクリックするとインスペクタが開きます。%d
または%i
整数を出力します。フォーマットはまだサポートされていません。%s
文字列を出力します。%f
浮動小数点値を出力します。フォーマットはまだサポートされていません。Safariには printfスタイルのフォーマッタがあります
%d
または%i
整数%[0.N]f
N桁の精度の浮動小数点値%o
オブジェクト%s
文字列次のコードは、アラートボックスに完全な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));
オブジェクトまたは配列の内容を警告する簡単な機能。
配列または文字列、あるいは内容を警告するオブジェクトを指定してこの関数を呼び出します。
関数
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);
ただ使う
console.info("CONSOLE LOG : ")
console.log(response);
console.info("CONSOLE DIR : ")
console.dir(response);
そして、あなたはクロムコンソールでこれを得るでしょう:
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
デバッグしたい場合はなぜコンソールデバッグを使用しないでください。
window.console.debug(jsonObject);
素敵でシンプル:
console.log("object: %O", obj)
サーバー上のjsで作業している場合、もう少し体操が大いに役立ちます...ここに私のppos(pretty-print-on-server)があります:
ppos = (object, space = 2) => JSON.stringify(object, null, space).split('\n').forEach(s => console.log(s));
これは、サーバーコードを書いているときに実際に読むことができる何かを作成するという強烈な仕事をします。