我正在使用Crockford的json2.js。当我想进行字符串化时,我确实JSON.stringify()
......效果很好。
但是,看过代码的人都知道它遵循现有的 JSON 对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重。
是否有 JSON 对象的属性我可以检查以查看浏览器是否正在使用 Crockford 的对象或其他对象?能够做类似的事情会很好alert(JSON.version());
您可以决定像这样使用一个:
<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);
在加载 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>