Ich habe eine JavaScript-Objektdefinition, die einen Zirkelverweis enthält: Sie hat eine Eigenschaft, die auf das übergeordnete Objekt verweist.
Es hat auch Funktionen, die ich nicht an den Server weitergeben möchte. Wie würde ich diese Objekte serialisieren und deserialisieren?
Ich habe gelesen, dass die beste Methode dazu die Verwendung von Douglas Crockfords Stringify ist. In Chrome wird jedoch der folgende Fehler angezeigt:
TypeError: Konvertieren einer Kreisstruktur in JSON
Der Code:
function finger(xid, xparent){
this.id = xid;
this.xparent;
//other attributes
}
function arm(xid, xparent){
this.id = xid;
this.parent = xparent;
this.fingers = [];
//other attributes
this.moveArm = function() {
//moveArm function details - not included in this testcase
alert("moveArm Executed");
}
}
function person(xid, xparent, xname){
this.id = xid;
this.parent = xparent;
this.name = xname
this.arms = []
this.createArms = function () {
this.arms[this.arms.length] = new arm(this.id, this);
}
}
function group(xid, xparent){
this.id = xid;
this.parent = xparent;
this.people = [];
that = this;
this.createPerson = function () {
this.people[this.people.length] = new person(this.people.length, this, "someName");
//other commands
}
this.saveGroup = function () {
alert(JSON.stringify(that.people));
}
}
Dies ist ein Testfall, den ich für diese Frage erstellt habe. Es gibt Fehler in diesem Code, aber im Wesentlichen habe ich Objekte in Objekten und eine Referenz, die an jedes Objekt übergeben wird, um zu zeigen, was das übergeordnete Objekt ist, wenn das Objekt erstellt wird. Jedes Objekt enthält auch Funktionen, die ich nicht stringifizieren möchte. Ich möchte nur die Eigenschaften wie die Person.Name
.
Wie serialisiere ich vor dem Senden an den Server und deserialisiere ihn unter der Annahme, dass derselbe JSON zurückgegeben wird?