순환 참조가 포함 된 JavaScript 개체 정의가 있습니다. 부모 개체를 참조하는 속성이 있습니다.
또한 서버로 전달하고 싶지 않은 기능도 있습니다. 이러한 개체를 직렬화 및 역 직렬화하려면 어떻게해야합니까?
이 작업을 수행하는 가장 좋은 방법은 Douglas Crockford의 stringify를 사용하는 것이라고 읽었습니다. 그러나 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이 다시 전달되었다고 가정하여 직렬화를 해제하는 방법은 무엇입니까?