Alguém pode me dizer qual é a diferença entre os 2 analisadores JSON?
https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js
Eu tenho um arquivo JSON de 13/04/2007 (ele tem métodos como parseJSON
). Não vejo esses métodos em nenhuma das novas versões.
Respostas:
Do código deles:
// 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); }; }
Acho que parseJSON está obsoleto, portanto, a nova versão (json2) nem o usa mais. No entanto, se o seu código usa
parseJSON
muito, você pode simplesmente adicionar esse trecho de código em algum lugar para fazê-lo funcionar novamente:Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); };
fonte
Citando aqui :
"JSON2.js - No final do ano passado, Crockford lançou discretamente uma nova versão de sua API JSON que substituiu sua API existente. A diferença importante era que ela usava um único objeto de base."
fonte
Eu também notei que as matrizes sequenciadas do json2 diferentemente do json2007.
Em json2007:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(array.toJSONString()); // Output: ["apple", "orange"].
Em json2:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(JSON.stringify(array)); // Output: [null, "apple", "orange"].
fonte