2009-02-16 4 views
80

Quelqu'un peut-il me dire quelle est la différence entre les 2 parseurs JSON?Différence entre json.js et json2.js

https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js

Je dispose d'un fichier JSON de 2007-04-13 (Il a des méthodes telles que parseJSON). Je ne vois ces méthodes dans aucune des nouvelles versions.

+2

Vous pouvez trouver le nouveau fichier ici https://github.com/douglascrockford/JSON-js –

+0

Pour tous ceux qui sont venus à cette question de se demander ce que ces fichiers sont, sachez qu'il n'y a aucune raison de les utiliser dans les navigateurs modernes. A partir du [GitHub repo] (https://github.com/douglascrockford/JSON-js): "Sur les navigateurs actuels, [json2.js] ne fait rien, préférant l'objet JSON intégré Il n'y a aucune raison de l'utiliser fichier à moins que le destin ne vous oblige à soutenir IE8, ce que personne ne devrait jamais avoir à faire à nouveau. " – Thunderforge

Répondre

56

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) n'a même pas l'utiliser plus. Toutefois, si votre code 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); 
    }; 
+1

Merci, il semble donc que parseJSON a été remplacé par JSON.parse? Aussi, qu'en est-il de JSONString? Notre code existant utilise beaucoup de ces méthodes: boolean.toJSONString() date.toJSONString() number.toJSONString() object.toJSONString() string.toJSONString() –

+0

Ensuite, ajoutez également le 1er morceau de code, toutes les valeurs que vous avez spécifiées sont des objets, elles seront donc toutes converties pour utiliser JSON.stringify automatiquement. –

+0

Merci! Je veux bien essayer. Alors, puis-je ajouter ces fonctions au fichier json.js? –

30

here Citation:

« JSON2.js - Fin de l'année dernière Crockford discrètement publié une nouvelle version de son API JSON qui a remplacé son API existante La différence importante était qu'il utilisait un seul objet de base. "

20

J'ai également remarqué que les tableaux stringson json2 différemment de json2007.

En json2007:

var array = []; 
array[1] = "apple"; 
array[2] = "orange"; 
alert(array.toJSONString()); // Output: ["apple", "orange"]. 

En json2:

var array = []; 
array[1] = "apple"; 
array[2] = "orange"; 
alert(JSON.stringify(array)); // Output: [null, "apple", "orange"]. 
+3

json2 est correct dans ce cas. json2007 avait tort d'ignorer le premier élément à l'index 0. –

Questions connexes