如何判断正在使用哪个JSON对象(Crockford或其他)?

时间:2012-06-22 05:30:38

标签: javascript json version

我正在使用Crockfordjson2.js。当我想要字符串化时,我会JSON.stringify() ...效果很好。

然而,那些看过代码的人知道它会延迟到现有的JSON对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重。

是否有JSON对象的属性我可以检查浏览器是否正在使用Crockford的对象,还是其他一些?能够做alert(JSON.version());

之类的事情会很高兴

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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>