Разница между json.js и json2.js - PullRequest
85 голосов
/ 16 февраля 2009

Может кто-нибудь сказать мне, в чем разница между двумя парсерами 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). Я не вижу этих методов ни в одной из новых версий.

Ответы [ 3 ]

57 голосов
/ 16 февраля 2009

Из их кода:

// 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);
    };
31 голосов
/ 16 февраля 2009

Цитирование здесь :

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

22 голосов
/ 31 мая 2012

Я также заметил, что 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"].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...