javascript - Google Chrome 是否支持 toJSON?

标签 javascript json google-chrome

在 Google Chrome 中使用 JSON.stringify 时似乎没有调用 toJSON?我使用 json2.js 作为不支持它的浏览器的备份。我猜是因为 Chrome 支持 JSON 而不是 toJSON 根本就没有使用 json2.js 吗?

更新
这是一个例子:http://jsfiddle.net/GZzvZ/

Firefox: {"foo":"foo","bar":"bar"}
Chrome: {"bar":"bar"}

最佳答案

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 );

关于javascript - Google Chrome 是否支持 toJSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4443187/

相关文章:

css - 如果 CSS 为 "user-select=none"的元素文本位于元素之间,则会被复制

javascript - Bootstrap javascript 事件未绑定(bind)

javascript - 如何根据值选择和检查这些类型的复选框?

javascript - Google Drive API v3 不列出文件/文件夹的指定元数据

java - 使用 Angularjs 从 Grails 后端获取 JSON 数据

ruby-on-rails - 如何使用 Rails 通过 Web 服务以 JSON 格式公开数据?

javascript - 执行 javascript 更改 webelement 时找不到变量错误

ios - 将 MTLModel 子类的嵌套数据结构序列化为 JSON

javascript - 通过扩展修改 Chrome Omnibox 值/文本

google-chrome - 从扩展获取 OAuth token 的不同方法?