485 Stimmen

Unterschied zwischen JSON.stringify und JSON.parse

Ich war verwirrt darüber, wann ich diese beiden Parser-Methoden verwenden soll.

Nachdem ich meine json_encoded Daten ausgebe und sie über Ajax wieder abrufe, gerate ich oft in Verwirrung darüber, wann ich JSON.stringify und JSON.parse verwenden sollte.

Ich erhalte [object, object] in meinem console.log, wenn geparst und ein JavaScript-Objekt, wenn stringifiziert.

$.ajax({
url: "demo_test.txt",
success: function(data) {
         console.log(JSON.stringify(data))
                     /* ODER */
         console.log(JSON.parse(data))
        //daran bin ich mir unsicher?
    }
});

14voto

ANIK ISLAM SHOJIB Punkte 2614
var log = { "page": window.location.href, 
        "item": "item", 
        "action": "action" };

log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));

//Die Ausgabe wird sein:

//Für die 1. Konsole ist ein String wie folgt:

'{ "page": window.location.href,"item": "item","action": "action" }'

//Für die 2. Konsole ist ein Objekt wie folgt:

Object {
page   : window.location.href,  
item   : "item",
action : "action" }

11voto

Hamed Kamrava Punkte 12061

JSON.stringify() Wandelt ein Objekt in einen String um.

JSON.parse() Wandelt einen JSON-String in ein Objekt um.

9voto

Patrick Punkte 969

Die eigentliche Verwirrung hier betrifft nicht parse vs. stringify, sondern den Datentyp des data-Parameters des Erfolgs-Callbacks.

data kann entweder die Rohantwort sein, d.h. ein String, oder es kann sich um ein JavaScript-Objekt handeln, gemäß der Dokumentation:

Erfolg

Typ: Funktion ( Beliebige Daten, String textStatus, jqXHR jqXHR ) Eine Funktion, die aufgerufen wird, wenn die Anfrage erfolgreich war. Der Funktion werden drei Argumente übergeben: Die Daten, die vom Server zurückgegeben wurden, entsprechend dem dataType-Parameter oder der dataFilter-Callback-Funktion, falls angegeben;<..>

Und der dataType ist standardmäßig auf 'intelligente Vermutung' eingestellt

dataType (standardmäßig: Intelligente Vermutung (xml, json, script oder html))

Typ: String Der Typ der Daten, die Sie vom Server zurück erwarten. Wenn keiner angegeben ist, wird jQuery versuchen, es zu erraten basierend auf dem MIME-Typ der Antwort (ein XML-MIME-Typ ergibt XML, in 1.4 JSON ergibt ein JavaScript-Objekt, in 1.4 wird das Skript ausgeführt, und alles andere wird als String zurückgegeben).

8voto

Sie sind das komplette Gegenteil voneinander.

JSON.parse() wird zum Analysieren von Daten verwendet, die als JSON empfangen wurden; es deserialisiert einen JSON-String in ein JavaScript-Objekt.

JSON.stringify() hingegen wird verwendet, um einen JSON-String aus einem Objekt oder einem Array zu erstellen; es serialisiert ein JavaScript-Objekt in einen JSON-String.

5voto

P. Brown Punkte 94

Ich weiß nicht, ob es erwähnt wurde, aber eine der Verwendungen von JSON.parse(JSON.stringify(myObject)) ist die Erstellung eines Klons des Originalobjekts.

Dies ist praktisch, wenn Sie mit Daten herumspielen möchten, ohne das ursprüngliche Objekt zu beeinflussen. Wahrscheinlich nicht der sauberste / schnellste Weg, aber sicherlich der einfachste für Objekte, die nicht extrem komplex sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X