6

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

但是,看过代码的人都知道它遵循现有的 JSON 对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重。

是否有 JSON 对象的属性我可以检查以查看浏览器是否正在使用 Crockford 的对象或其他对象?能够做类似的事情会很好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 回答