将具有循环引用的JavaScript对象转换为JSON(使用Stringify函数)。

6 浏览
0 Comments

将具有循环引用的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时如何反序列化?

0