2010-05-06 65 views
3

有我任何機會,以序列(任何格式,這樣我就可以將其存儲在DB)?的Javascript系列化

var obj1 = {}; 
var obj2 = {}; 
obj1.link = obj2; 
obj2.link = obj1; 
var meta = [obj1, obj2]; 

據我所知,問題是JSON序列化對象的對象鏈接。

回答

2

是。您需要爲您的對象提供某種ID並將其用作參考。

var obj1 = {id: "obj1"}; 
var obj2 = {id: "obj2"}; 
obj1.link = "obj2"; 
obj2.link = "obj1"; 
var meta = [obj1, obj2]; 
1

一種方法是使用一個對象作爲最外層的容器,使用對象的鍵作爲IDS:

var objs = { 
    obj1: { link: "obj2" }, 
    obj2: { link: "obj1" } 
} 

然後你就可以按照只需財產查找鏈接:

var o1 = objs["obj1"]; 
var o2 = objs[o1.link]; 

並將其轉換成JSON,而無需任何轉換

1

JSON序列化這樣的

var a = {}, b = {}; 
var d = { 
    a: a, 
    b: b, 
    c: "c" 
}; 

JSON.stringify(d, function(key, value) { 
    if (value === a || value === b) { 
     return; 
    } 
    return value; 
}); 
// returns '{"c":"c"}' 
:鏈接可容易地通過使用該替換器功能來避免