Может кто-нибудь сказать мне, в чем разница между двумя парсерами JSON?
https://github.com/douglascrockford/JSON-js/blob/master/json.js
https://github.com/douglascrockford/JSON-js/blob/master/json2.js
У меня есть файл JSON от 13 апреля 2007 г. (в нем есть такие методы, как parseJSON
). Я не вижу этих методов ни в одной из новых версий.
Ответы:
Из их кода:
// 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); }; }
Я думаю, что parseJSON устарел, поэтому в новой версии (json2) он даже больше не используется. Однако, если ваш код использует
parseJSON
много, вы можете просто добавить этот фрагмент кода где-нибудь, чтобы он снова заработал:Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); };
источник
Цитата здесь :
«JSON2.js - В конце прошлого года Крокфорд незаметно выпустил новую версию своего JSON API, которая заменила его существующий API. Важным отличием было то, что он использовал единственный базовый объект».
источник
Я также заметил, что строковые массивы json2 отличаются от json2007.
В json2007:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(array.toJSONString()); // Output: ["apple", "orange"].
В json2:
var array = []; array[1] = "apple"; array[2] = "orange"; alert(JSON.stringify(array)); // Output: [null, "apple", "orange"].
источник