6

私はCrockfordjson2.jsを使用しています。私が文字列化したいとき、私はJSON.stringify()...うまくいきます。

ただし、コードを見た人は、コードが既存のJSONオブジェクトとプロパティに従うことを知っています。私が抱えている特定の問題は、この違いが原因である可能性があります。

ブラウザがCrockfordのオブジェクトまたは他のオブジェクトを使用しているかどうかを確認できるJSONオブジェクトのプロパティはありますか?次のようなことができるといいですねalert(JSON.version());

4

2 に答える 2

4

次のように使用するものを決定できます。

<script>window.JSON || document.write('<script src="js/json2.js"><\/script>')</script>

これはwindow.JSON(ブラウザでサポートされている) 存在するかどうかを最初にチェックし、存在しない場合はそれを使用して Crockford の json2.js をインポートします。

アップデート

var whichJSON = null;

if (! window.JSON) {
  document.write('<script src="js/json2.js"><\/script>');
  whichJSON = 'Crockford Version';
}
else {
  whichJSON = 'Browser Native Version';
}

alert(whichJSON);
于 2012-06-22T06:00:04.667 に答える
3

Crockford のスクリプトをロードする前に、彼とまったく同じようにグローバル JSON オブジェクトを確認できます。

<script>
    var JSON,
        nativeJSON = true;

    if (!JSON) {
        var nativeJSON = false;
        document.write('<script src="js/json2.js"><\/script>');
    }

    if (!nativeJSON) {
        // All JSON objects are using Crockford's implementation
    } else {
        // All JSON objects from here on out are NOT using Crockford's implementation
    }
</script>
于 2012-06-22T05:57:40.663 に答える