在Google Chrome中使用JSON.stringify时,似乎没有调用toJSON?我使用json2.js作为不支持它的浏览器的备份。我想因为Chrome支持JSON但不支持JSON json2.js根本没有使用?
更新
以下是一个示例:http://jsfiddle.net/GZzvZ/
Firefox:{“foo”:“foo”,“bar”:“bar”} Chrome:{“bar”:“bar”}
答案 0 :(得分: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 );