it-swarm.com.de

JSON-geparstes Objekt drucken?

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.

167
Skizit

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.

104
RoToRa

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.

496
cHao

versuche console.dir() anstelle von console.log()

console.dir(obj);

MDN sagt console.dir() wird unterstützt von:

  • FF8 +
  • IE9 +
  • Oper
  • Chrom
  • Safari
48
Distdev

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.

42
Lukasz Wiktor

zum Drucken eines JSON-analysierten Objekts geben Sie einfach Folgendes ein

console.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 String
19
Dave Anderson

Der 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));
2

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);
2
Rayiez

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
2

Wenn Sie debuggen möchten, verwenden Sie nicht das Konsolendebugging

window.console.debug(jsonObject);
1
Ruwantha

Schön und einfach:

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

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.