¿Alguien puede decirme cuál es la diferencia entre los 2 analizadores JSON?
https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js
Tengo un archivo JSON de 2007-04-13 (tiene métodos como parseJSON
). No veo estos métodos en ninguna de las nuevas versiones.
Respuestas:
De su código:
// 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); }; }
Supongo que parseJSON está obsoleto, por lo tanto, la nueva versión (json2) ni siquiera lo usa más. Sin embargo, si su código usa
parseJSON
mucho, simplemente puede agregar este fragmento de código en algún lugar para que funcione nuevamente:Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); };
fuente
Citando aquí :
"JSON2.js: a fines del año pasado, Crockford lanzó silenciosamente una nueva versión de su API JSON que reemplazó su API existente. La diferencia importante fue que usó un único objeto base".
fuente
También noté que json2 agrupaba las matrices de manera diferente a 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"].
fuente