Подтвердить что ты не робот

Разница между json.js и json2.js

Может ли кто-нибудь сказать мне, какая разница между двумя парсерами JSON?

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

У меня есть файл JSON с 2007-04-13 (у него есть методы, такие как parseJSON). Я не вижу эти методы в любой из новых версий.

4b9b3361

Ответ 1

Из своего кода:

// 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);
    };

Ответ 2

Цитата здесь:

"JSON2.js - В конце прошлого года Crockford спокойно выпустил новую версию своего JSON API, который заменил его существующий API. Важным отличием было то, что он использовал один базовый объект.

Ответ 3

Я также заметил, что строковые решетки 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"].