2010-12-14 12 views
1

Google ChromeでJSON.stringifyを使用すると、toSSONが呼び出されていないようですか?私はjson2.jsをサポートしていないブラウザのバックアップとして使用しています。 ChromeはJSONをサポートしていますが、toJSONではなく、json2.jsはまったく使用されていないと思いますか? http://jsfiddle.net/GZzvZ/Google ChromeでtoJSONはサポートされていますか?

のFirefox:ここ更新

は一例であり、{ "FOO": "FOO"、 "バー": "バー"}
クローム:{ "バー": "バー" }

+0

エラーの原因を特定できるように、コードを提出してください。 – haylem

+0

例を追加しました。今、もし私が正しくtoSSONを使用しているのですか? – Pickels

+0

私の答えを編集しました。 – haylem

答えて

4
var t = {}; 

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

私にとって完璧に機能します。 警告しますので、toJSONメソッドを適切に呼び出します(Chrome 8)。

EDIT:

通常です。 Fooは関数であり、関数オブジェクトはJSONでは使用できません。 Firefoxはただ許しているだけです。

実際、私は標準で明確な答えは見つけられません。独自のシリアライゼーションを提供するためにtoJSON()を提供することを考慮すると、それは許可されるべきかどうかです。しかし、とにかく、それがあなたの失敗の理由です。

このようなjsFiddleの例を編集すると、toJSONfooに応じて呼び出されます。

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); 
関連する問題