2012-02-17 71 views
3

我想轉儲這個數組到字符串,並在評估它後得到相同的對象。如何轉儲JavaScript數據與函數評估字符串?

arr = [5, 86, function() { console.log(arguments); }, [console.log, 357]]; 

雖然函數可能有額外的屬性,但只有代碼是必要的重現。

我不能找到一種方法,在節點做到這一點:

> console.log(arr) 
[5, 86, [Function] [ [Function], 357] ] 

> util.format('%j', arr) 
'[5,86,null,[null,357]]' 

> arr.toString() 
'5,86,function() { console.log(arguments); },function() {\n process.stdout.write(util.format.apply(this, arguments) + \'\\n\');\n},357' 

後者已flatterned數組。

有沒有更好的方法?

更新:找到了滿意的解決方案,看到了自己的答案。

回答

0

我發現了什麼我滿意:jsDump

2

JSON不能代表的功能。沒有辦法將你的數組放入JSON中。人們經常使用術語「JSON」來表示任何Javascript對象文字。它不是:它是嚴格定義的數據格式。

進展:OP已經從標題中去掉 「JSON」。

+0

我已經改變了問題的標題。 :) – 2012-02-17 18:29:18

+0

我認爲它可以代表功能。或者它可以嗎? 因爲我以前存儲在MongoDB中 – 2012-02-17 18:38:41

+0

也許BSON能的功能,但是JSON不能:它適合在一個屏幕上:http://json.org – 2012-02-17 18:46:22

0

如果我有你的權利,你想要把它壓扁成一個字符串,同時保留原來的然後將其轉換回數組?

var original = ['a','b','c']; 
var str = original.toString(); 
var newAgain = str.split(','); 

console.log(original); //['a','b','c'] 
console.log(str);// "a,b,c" 
console.log(newAgain); //['a','b','c']