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?
    }
});

4voto

nosdalg Punkte 571

JSON.stringify(obj [, replacer [, space]]) - Nimmt ein beliebiges serialisierbares Objekt entgegen und liefert die JSON-Repräsentation als Zeichenkette zurück.

JSON.parse(string) - Nimmt eine wohlgeformte JSON-Zeichenkette entgegen und liefert das entsprechende JavaScript-Objekt zurück.

4voto

Zigri2612 Punkte 2109

JavaScript Object <-> JSON String


JSON.stringify() <-> JSON.parse()

JSON.stringify(obj) - Nimmt jedes serialisierbare Objekt und gibt die JSON-Repräsentation als Zeichenkette zurück.

JSON.stringify() -> Objekt Zu Zeichenkette.

JSON.parse(Zeichenkette) - Nimmt eine wohlgeformte JSON-Zeichenkette und gibt das entsprechende JavaScript-Objekt zurück.

JSON.parse() -> Zeichenkette Zu Objekt.

Erklärung: JSON.stringify(obj [, replacer [, space]]);

Replacer/Space - optional oder nimmt einen Integerwert oder Sie können eine Funktion für Integer-Rückgabetyp aufrufen.

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}
  • Replacer wird nur verwendet, um nicht endliche Nummern durch null zu ersetzen.
  • Space wird verwendet, um die JSON-Zeichenkette durch Leerzeichen zu formatieren.

4voto

David Carmona Punkte 41

Sie stehen sich gegenüber. JSON.Stringify() konvertiert JSON in String und JSON.Parse() analysiert einen String in JSON.

1voto

Sheo Dayal Singh Punkte 1405

JSON: Es wird hauptsächlich verwendet, um Daten mit dem Server auszutauschen. Bevor das JSON-Objekt an den Server gesendet wird, muss es ein String sein.

JSON.stringify() // Konvertiert das JSON-Objekt in die String-Repräsentation.
var jsonData={"Name":"ABC","Abteilung":"Software"};// Es ist ein JSON-Objekt
var jsonString=JSON.stringify(jsonData);// Es ist eine String-Repräsentation des Objekts
// jsonString === '{"Name":"ABC","Abteilung":"Software"}'; ist wahr

Es wandelt auch das Javascript-Array in einen String um

var arrayObject=["ABC","Software"];// Es ist ein Array-Objekt
var arrString=JSON.stringify(array);// Es ist die String-Repräsentation des Arrays (Objekts)
// arrString === '["ABC","Software"]'; ist wahr 

Wenn wir die JSON-Daten vom Server erhalten haben, werden die Daten im String-Format sein. Daher wandeln wir den String in ein JSON-Objekt um.

JSON.parse() // Um den String in ein JSON-Objekt umzuwandeln.
var data='{ "name":"ABC", "Abteilung":"Software"}'// es ist ein String (auch wenn es wie ein Objekt aussieht)
var JsonData= JSON.parse(data);// Es ist die JSON-Objekt-Repräsentation des Strings.
// JsonData === { "name":"ABC", "Abteilung":"Software"}; ist wahr

0voto

priya log Punkte 90

JSON.parse() wird verwendet, um String in Objekt umzuwandeln.
JSON.stringify() wird verwendet, um Objekt in String umzuwandeln.

Sie können dies auch referenzieren...

function ajax_get_json(){

    var hr = new XMLHttpRequest();
    hr.open("GET", "JSON/mylist.json", true);
    hr.setRequestHeader("Content-type", "application/json",true);
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
           /*  var return_data = hr.responseText; */

           var data=JSON.parse(hr.responseText);
           var status=document.getElementById("status");
           status.innerHTML = "";
           /* status.innerHTML=data.u1.country;  */
           for(var obj in data)
               {
               status.innerHTML+=data[obj].uname+" befindet sich in "+data[obj].country+"<br/>";
               }

        }
    }
    hr.send(null);
    status.innerHTML = "Anfrage wird gesendet...";
}

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