Javascript 如何判断正在使用哪个JSON对象(Crockford';s或其他)?
我用的是。当我想要字符串化时,我会使用Javascript 如何判断正在使用哪个JSON对象(Crockford';s或其他)?,javascript,json,version,Javascript,Json,Version,我用的是。当我想要字符串化时,我会使用JSON.stringify()…非常有效 但是,看过代码的人都知道,它遵从现有的JSON对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重 我是否可以检查JSON对象的属性,以查看浏览器是否使用Crockford的对象或其他对象?能够做一些类似于alert(JSON.version())的事情会很好在加载Crockford的脚本之前,您可以像Crockford那样检查全局JSON对象: <script> var JSON,
JSON.stringify()
…非常有效
但是,看过代码的人都知道,它遵从现有的JSON对象和属性。我怀疑我遇到的某个问题可能是由于这种尊重
我是否可以检查JSON对象的属性,以查看浏览器是否使用Crockford的对象或其他对象?能够做一些类似于
alert(JSON.version())的事情会很好代码>在加载Crockford的脚本之前,您可以像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>
var JSON,
nativeJSON=true;
如果(!JSON){
var nativeJSON=false;
文件。写(“”);
}
如果(!nativeJSON){
//所有JSON对象都使用Crockford的实现
}否则{
//从这里开始,所有JSON对象都没有使用Crockford的实现
}
您可以决定这样使用:
<script>window.JSON || document.write('<script src="js/json2.js"><\/script>')</script>
假设所有JSON对象都是Crockford的实现,或者都不是,这样安全吗?如果是,那么您可以在引入Crockford脚本之前检查JSON全局对象,设置一个全局变量,如nativeJSON=false代码>可以稍后在代码中引用。另外,+1用于指出这个方便的脚本@davidkennedy85,我相信(但不知道)现在很多浏览器的javascript实现中都有本地JSON对象……我想。我不知道;我认为使用这个库的目的是为了那些本机不支持JSON的浏览器。Crockford的脚本只会创建一个新的JSON全局(如果还没有的话)。否则我会想象它什么都不做,否则我会想象它什么都不做。但是,大卫,这不是问题的重点吗?Crockfords实现可能会产生与其他实现不同的结果,因此人们可能想知道使用的是哪一个?我想不是。通过src
属性加载的脚本是否每次都按照页面上的顺序执行?我不希望在加载json2.js之后进行检查。这是一个很好的观点@Sarfraz发布了一个我将借用的解决方案。@JonathanM-是的,通过“标准”脚本元素语法包含的脚本将按照它们包含的顺序执行。(有异步加载和执行脚本的方法,但这不会偶然发生。)您的条件!JSON
指的是顶部声明的JSON
变量,而不是本机浏览器JSON对象。这非常优雅,但它不会使以后在代码中检查正在使用的实现变得更容易。@davidkennedy85:Yep我不会担心哪个版本,因为目的是使用JSON,无论哪个版本可用:)我同意,但是它没有回答问题:)但是我如何使用这个方法来判断我使用的是现有的JSON对象还是Crockford对象?我想至少在一个警报中这样说,最多能根据Crockford还是其他做出程序性的决定。
var whichJSON = null;
if (! window.JSON) {
document.write('<script src="js/json2.js"><\/script>');
whichJSON = 'Crockford Version';
}
else {
whichJSON = 'Browser Native Version';
}
alert(whichJSON);