将具有循环引用的JavaScript对象转换为JSON(使用Stringify函数)。
将具有循环引用的JavaScript对象转换为JSON(使用Stringify函数)。
我有一个包含循环引用的JavaScript对象定义:它有一个引用父对象的属性。
它还有一些我不想被传递到服务器的函数。我应该如何序列化和反序列化这些对象?
我读到最好的方法是使用Douglas Crockford的stringify函数。然而,在Chrome中我得到了以下错误:
TypeError: Converting circular structure to JSON
代码:
function finger(xid, xparent){
this.id = xid;
this.xparent;
//其他属性
}
function arm(xid, xparent){
this.id = xid;
this.parent = xparent;
this.fingers = [];
//其他属性
this.moveArm = function() {
//moveArm函数细节 - 不包含在这个测试用例中
alert("moveArm被执行");
}
}
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");
//其他命令
}
this.saveGroup = function () {
alert(JSON.stringify(that.people));
}
}
这是我为这个问题创建的一个测试用例。这段代码中存在错误,但基本上我有一个包含对象的对象,并在创建对象时传递给每个对象一个指向父对象的引用。每个对象还包含函数,我不希望被字符串化。我只想要属性,如Person.Name
。
在发送到服务器之前如何序列化并在传回相同的JSON时如何反序列化?