Serialisieren JavaScript-Objekt in JSON-string
Ich habe diese JavaScript-Prototyp:
Utils.MyClass1 = function(id, member) {
this.id = id;
this.member = member;
}
und ich erstelle ein neues Objekt:
var myobject = new MyClass1("5678999", "text");
Wenn ich das Tue:
console.log(JSON.stringify(myobject));
ist das Ergebnis:
{"id":"5678999", "member":"text"}
aber ich brauche für den Typ der Objekte, die aufgenommen werden in dem JSON-string, wie diese:
"MyClass1": { "id":"5678999", "member":"text"}
Gibt es eine schnelle Möglichkeit dieses mit einem Rahmen oder sowas? Oder muss ich das implementieren einer toJson()
Methode in der Klasse und es manuell machen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT:
JSON.stringify
wird stringify alle 'Eigenschaften' Ihrer Klasse. Wenn Sie wollen, bestehen nur einige von Ihnen, so können Sie diese individuell wie diese:Es ist nur JSON? Sie können
stringify()
JSON:Und analysieren zurück zu JSON wieder mit
parse()
:Wenn Sie Funktionen in das Objekt, verwenden Sie diese zu serialisieren:
Beispiele:
Serialisieren:
Ergebnis:
Deserialisieren:
Ergebnis:
Gut, der Typ eines Elementes ist nicht standardmäßig serialisiert, so sollten Sie es manuell hinzufügen. Zum Beispiel
Glück!
edit: geändert typeof auf die richtige .Konstruktor. Sehen https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor für weitere Informationen über die constructor-Eigenschaft für Objekte.
Könnte dies nützlich sein.
http://nanodeath.github.com/HydrateJS/
https://github.com/nanodeath/HydrateJS
Verwenden
hydrate.stringify
zum serialisieren des Objekts undhydrate.parse
zu Deserialisieren.Können Sie eine benannte Funktion auf den Konstruktor.
Könnte man eine regex zu analysieren 'foo' von myobject.Konstruktor verwenden, um den Namen.
Unten ist ein anderer Weg, durch die wir können JSON-Daten mit JSON.stringify () - Funktion
Entschloss ich mich mein problem auf diese Weise nicht der beste Weg, das offensichtlich, aber ist interessant zu teilen:
Habe ich das direkt geändert json2.js Bibliothek (gegenüber von best-practices...), verändert Methode JSON.stringify() und str () - Funktion, wenn Sie liest ein Objekt legte ich erst die typeof:
Dies ist nur zu fügen Sie ein Attribut "classname" in meinen Klassen. Und nach dem iterieren, fügt dieser Satz:
Ich hatte einige Probleme mit dem oben genannten Lösungen mit einem "assoziativen array" Typ object. Diese Lösungen scheinen zu bewahren, die Werte, aber Sie sichern nicht den tatsächlichen Namen der Objekte, die diesen Werten zugeordnet sind, die kann dazu führen, einige Probleme. Also ich habe die folgenden Funktionen, die ich benutze statt:
Beachten Sie, dass diese nicht verwendet werden können mit einem beliebigen Objekt-im Grunde genommen es wird ein neues array erstellt, speichert die Schlüssel als element 0 mit den Daten der folgende. Also, wenn Sie versuchen, um ein array zu laden, die ist nicht mit erstellt diese Funktionen das element 0 als Schlüssel-Liste, sind die Ergebnisse möglicherweise...interessant 🙂
Ich verwende es wie folgt: