2010-12-14 89 views
1

在Google Chrome中使用JSON.stringify時,似乎沒有調用jSON?我使用json2.js作爲不支持它的瀏覽器的備份。我想由於Chrome支持JSON,但不支持JSON json2.js沒有被使用?是否在Google Chrome中支持JSON?

更新
下面是一個例子:http://jsfiddle.net/GZzvZ/

火狐:{ 「foo」 的: 「foo」 的, 「酒吧」: 「酒吧」}
鉻:{ 「酒吧」: 「酒吧」 }

+0

請提交您的代碼,以便我們確定錯誤的原因。 – haylem 2010-12-14 19:24:54

+0

添加了一個示例。現在我懷疑我是否正確使用toJSON。 – Pickels 2010-12-14 19:35:12

+0

編輯我的答案。 – haylem 2010-12-14 19:50:24

回答

4
var t = {}; 

t.toJSON = function() { alert('meuh'); return (''); } 
JSON.stringify(t) 

對我來說工作得很好。 它提醒,所以它確實調用toJSON方法(在Chrome 8中)。

編輯:

正常。你的Foo是一個函數,在JSON中不允許使用函數對象。我猜,Firefox正在寬容。

嗯,其實我很好奇,我沒有在標準中找到明確的答案。考慮到你提供了toJSON()來提供你自己的序列化,應該允許還是不允許。但無論如何,這就是你失敗的原因。

如果您編輯像這樣的jsFiddle示例,則toJSON將在foo上相應調用。

var obj = function(){ 
    this.foo = 'test'; // OK 
    //this.foo = function(){ }; KO 
    this.foo.toJSON = function(){ 
     return 'foo'; 
    }; 

    this.bar = 'bar'; 
} 

var ins = new obj(); 
var json = JSON.stringify(ins); 
document.write(json);