У меня есть определение объекта JavaScript, которое содержит циклическую ссылку: у него есть свойство, которое ссылается на родительский объект.
В нем также есть функции, которые я не хочу передавать на сервер. Как мне сериализовать и десериализовать эти объекты?
Я читал, что лучший способ сделать это - использовать строку Дугласа Крокфорда. Однако в Chrome появляется следующая ошибка:
TypeError: преобразование круговой структуры в JSON
Код:
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));
}
}
Это тестовый пример, который я создал для этого вопроса. В этом коде есть ошибки, но, по сути, у меня есть объекты внутри объектов, и каждому объекту передается ссылка, чтобы показать, что является родительским объектом при создании объекта. Каждый объект также содержит функции, которые я не хочу преобразовывать в строки. Мне просто нужны такие свойства, как Person.Name
.
Как мне сериализовать перед отправкой на сервер и десериализовать его, предполагая, что тот же JSON передается обратно?
stringify
вызове как указывает @MattEvans ниже. - person ruffin   schedule 13.05.2020