Quelqu'un peut-il me dire quelle est la différence entre les 2 analyseurs JSON?
https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js
J'ai un fichier JSON du 2007-04-13 (il a des méthodes telles que parseJSON
). Je ne vois ces méthodes dans aucune des nouvelles versions.
Réponses:
À partir de leur code:
// Augment the basic prototypes if they have not already been augmented. // These forms are obsolete. It is recommended that JSON.stringify and // JSON.parse be used instead. if (!Object.prototype.toJSONString) { Object.prototype.toJSONString = function (filter) { return JSON.stringify(this, filter); }; Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); }; }
Je suppose que parseJSON est obsolète, donc la nouvelle version (json2) ne l'utilise même plus. Cependant, si votre code en utilise
parseJSON
beaucoup, vous pouvez simplement ajouter ce morceau de code quelque part pour le faire fonctionner à nouveau:Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); };
la source
Citant ici :
"JSON2.js - À la fin de l'année dernière, Crockford a discrètement publié une nouvelle version de son API JSON qui a remplacé son API existante. La différence importante était qu'elle utilisait un seul objet de base."
la source
J'ai également remarqué que json2 stringifiait les tableaux différemment de json2007.
Dans json2007:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(array.toJSONString()); // Output: ["apple", "orange"].
Dans json2:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(JSON.stringify(array)); // Output: [null, "apple", "orange"].
la source