2012-11-29 52 views
0

我想將一個JavaScript對象序列化爲json,稍後將其反序列化爲其原始形式。序列化JavaScript對象

困難的部分是,它不僅僅是我需要序列化的基元。例如:

function Foo() { 
    this.bar = "Hello World"; 
} 

Foo.prototype.baz = function() { 
    alert(this.bar); 
} 

var qux = new Foo(); 

我該如何序列化qux?如果我只是JSON.stringify然後JSON.parse它,我將無法撥打qux.baz()

有沒有任何標準或工具或技術可以做到這一點?任何提示指向我在正確的方向?

謝謝。

+3

你能給我們一個例子,你想要什麼序列化?功能? – Brad

+2

你嘗試過'JSON.stringify(yourObject)'嗎? – Pointy

回答

3

JavaScript對象到JSON

可惜你不能序列化的完整的對象到JSON由於JSON規範不允許的功能被序列化。

然而,你可以創建你自己的序列化標準。你可以稱它爲Javascript Frozen Object(JSFO),這是一個很好的名字,因爲在其他語言中,你試圖做的通常被稱爲「凍結」。或者,如果您想要一個類似於JSON的名稱,可以將其稱爲Javascript Frozen(或Full?)對象表示法(JSFON)。

該實現相當簡單。您可以從任何實現它的庫中複製JSON代碼,如jQuery或YUI。或者您可以從json.org下載任何參考實現並修改它以將函數串聯起來。

爲字符串化你基本上需要做的是這樣的功能:

if (typeof obj == 'function') { 
    return '"' + key + '":' + obj.toString(); 
} 

插件類似的東西到任何JSON字符串化庫。

但是請不要將它稱爲JSON,因爲JSON是一種具有已發佈規範的非常具體的數據格式。

+0

非常酷。 +1但它仍不代表引用,原型鏈等。 – nicholas