var t = {};
t.toJSON = function() { alert('meuh'); return (''); }
JSON.stringify(t)
Fonctionne parfaitement bien pour moi. Il alerte, il appelle donc la méthode toJSON de manière appropriée (dans Chrome 8).
EDIT:
C'est normal. Votre Foo est une fonction, et les objets de fonction ne sont pas autorisés dans JSON. Firefox est juste en train de pardonner, je suppose.
Eh bien, en fait, je me demande, je ne trouve pas de réponse claire dans la norme. Considérant que vous fournissez un toJSON() pour fournir votre propre sérialisation, devrait-il être autorisé ou non. Mais de toute façon, c'est la raison de votre échec.
Si vous éditez votre exemple jsFiddle comme ceci, le toJSON
est appelé en conséquence sur 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);
Veuillez soumettre votre code afin que nous puissions identifier la cause de l'erreur. – haylem
Ajout d'un exemple. Maintenant, je doute que j'utilise correctement JSON. – Pickels
a modifié ma réponse. – haylem