2010-12-14 69 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);