json.jsとjson2.jsの違い


87

誰かが2つのJSONパーサーの違いを教えてもらえますか?

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

2007-04-13のJSONファイルがあります(などのメソッドがありますparseJSON)。これらのメソッドは、どの新しいバージョンにも表示されません。


2
あなたはここに新しいファイルを見つけることができますgithub.com/douglascrockford/JSON-js
ダニエル・リトル

1
これらのファイルが何であるか疑問に思ってこの質問に来た人は、現代のブラウザでそれらを使用する理由がないことを知ってください。GitHubリポジトリから:「現在のブラウザーでは、[json2.js]は何もせず、組み込みのJSONオブジェクトを優先します。運命がIE8のサポートを強制しない限り、このファイルを使用する理由はありません。もう一度やらなければならない」
サンダーフォージ2017

回答:


59

彼らのコードから:

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

1
おかげで、parseJSONがJSON.parseに置き換えられたようです。また、toJSONStringはどうですか?既存のコードは、次の多くのメソッドを使用します。boolean.toJSONString()date.toJSONString()number.toJSONString()object.toJSONString()string.toJSONString()

1
次に、最初のコードも追加します。指定した値はすべてオブジェクトであるため、JSON.stringifyを使用するように自動的に変換されます。
Luca Matteis

ありがとう!これを試してみます。では、これらの関数をjson.jsファイルに追加できますか?

「廃止」-絶対または廃止?
エリック

84
「廃止」-間違いなく廃止された場合。
davidtbernal 2011年

31

ここで引用:

「JSON2.js-昨年末、Crockfordは既存のAPIに代わる新しいバージョンのJSON APIを静かにリリースしました。重要な違いは、単一のベースオブジェクトを使用したことです。」


25

また、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"].

4
この場合、json2は正しいです。json2007は、インデックス0の最初の要素を無視するように間違っていた
ロブKinyon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.