Ich habe ein Javascript-Objekt, das JSON mit JSON.parse
analysiert hat. Jetzt möchte ich das Objekt drucken, damit ich es debuggen kann (etwas geht mit der Funktion schief). Wenn ich folgendes mache ...
for (property in obj) {
output += property + ': ' + obj[property]+'; ';
}
console.log(output);
Ich bekomme mehrere [object Object] aufgelistet. Ich frage mich, wie ich das ausdrucken könnte, um den Inhalt anzuzeigen.
Die meisten Debugger-Konsolen unterstützen die direkte Anzeige von Objekten. Benutz einfach
console.log(obj);
Abhängig von Ihrem Debugger wird das Objekt in der Konsole höchstwahrscheinlich als reduzierter Baum angezeigt. Sie können den Baum öffnen und das Objekt untersuchen.
Sie wissen, wofür JSON steht? JavaScript-Objekt-Notation . Es ist ein ziemlich gutes Format für Objekte.
JSON.stringify(obj)
gibt Ihnen eine Stringdarstellung des Objekts zurück.
versuche console.dir()
anstelle von console.log()
console.dir(obj);
MDN sagt console.dir()
wird unterstützt von:
Wenn Sie ein hübsches, mehrzeiliges JSON mit Einrückung wünschen, können Sie JSON.stringify
Mit dem dritten Argument verwenden:
JSON.stringify(value[, replacer[, space]])
Zum Beispiel:
var obj = {a:1,b:2,c:{d:3, e:4}};
JSON.stringify(obj, null, " ");
oder
JSON.stringify(obj, null, 4);
sie erhalten folgendes Ergebnis:
"{
"a": 1,
"b": 2,
"c": {
"d": 3,
"e": 4
}
}"
In einem Browser macht console.log(obj)
noch bessere Arbeit, in einer Shell-Konsole (node.js) jedoch nicht.
zum Drucken eines JSON-analysierten Objekts geben Sie einfach Folgendes einconsole.log( JSON.stringify(data, null, " ") );
und Sie erhalten eine sehr klare Ausgabe
Verwenden Sie Stringformate.
console.log("%s %O", "My Object", obj);
Chrome hat Formatbezeichner mit den folgenden;
%s
Formatiert den Wert als Zeichenfolge. %d
oder %i
Formatiert den Wert alsan eine ganze Zahl. %f
Formatiert den Wert als Gleitkommawert.%o
Formatiert den Wert als erweiterbares DOM-Element (wie im Bedienfeld " Elemente"). %O
Formatiert den Wert als ein erweiterbares JavaScript-Objekt %c
Formatiert die Ausgabezeichenfolge gemäß den von Ihnen bereitgestellten CSS-Stilen.Firefox hat auch String Substitions die ähnliche Optionen haben.
%o
Gibt einen Hyperlink zu einem JavaScript-Objekt aus. Durch Klicken auf den Link wird ein Inspektor geöffnet.%d
oder %i
Gibt eine Ganzzahl aus. Die Formatierung wird noch nicht unterstützt.%s
Gibt einen String aus.%f
Gibt einen Gleitkommawert aus. Die Formatierung wird noch nicht unterstützt.Safari hat printf-Formatierer
%d
oder %i
Integer%[0.N]f
Gleitkommawert mit einer Genauigkeit von N Stellen%o
Objekt%s
StringDer folgende Code zeigt vollständige Json-Daten im Alert-Feld an
var data= '{"employees":[' +
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }]}';
json = JSON.parse(data);
window.alert(JSON.stringify(json));
Einfache Funktion zum Warnen von Inhalten eines Objekts oder eines Arrays.
Rufen Sie diese Funktion mit einem Array oder einer Zeichenfolge oder einem Objekt auf, das den Inhalt warnt.
Funktion
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);
}
}
Verwendungszweck
var data = [1, 2, 3, 4];
print_r(data);
Benutz einfach
console.info("CONSOLE LOG : ")
console.log(response);
console.info("CONSOLE DIR : ")
console.dir(response);
und Sie erhalten dies in Chrome-Konsole:
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
Wenn Sie debuggen möchten, verwenden Sie nicht das Konsolendebugging
window.console.debug(jsonObject);
Schön und einfach:
console.log("object: %O", obj)
Wenn du in js auf einem Server arbeitest, reicht ein bisschen mehr Gymnastik aus ... Hier sind meine ppos (pretty-print-on-server):
ppos = (object, space = 2) => JSON.stringify(object, null, space).split('\n').forEach(s => console.log(s));
das ist ein blöder Job, bei dem ich etwas erschaffe, das ich tatsächlich lesen kann, wenn ich Servercode schreibe.