日期:2014-05-16  浏览次数:20312 次

在 IE6 IE7 IE8(Q) 中不能在 JSON 直接量的最后一个键值对后加 ','
标准参考
JSON(JavaScript Object Notation)是一种易于人们阅读和编写、同时也易于机器解析和生成的轻量级的数据交换格式。它是基于 JavaScript Programming Language 和 Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括 C,C++,C#,Java,JavaScript,Perl,Python 等)。这些特性使 JSON 成为了理想的数据交换语言。

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

关于 JSON 的更多内容,请参考 www.json.org 的 介绍 JSON。

问题描述
JSON 直接量的最后一个键值对后加 ',' 在 IE6 IE7 IE8(Q) 浏览器中会导致脚本中断。

造成的影响
该问题将导致脚本不能按照预期的效果正常执行。

受影响的浏览器
IE6 IE7 IE8(Q)

问题分析
分析以下代码:

<script language="JavaScript">
var jsonObj = {key1:"value1",key2:"value2",key3:"value3" ,};
alert(jsonObj.key1);
</script>
以上代码在各浏览器中的运行结果如下:

IE6 IE7 IE8(Q) 其他浏览器
脚本执行出错,提示“缺少标识符、字符串或数字” 脚本正常执行,弹出“value1”

可见,JSON 直接量的最后一个键值对后加 ',' 在 IE6 IE7 IE8(Q) 浏览器中会导致脚本中断。

解决方案
即便规范没有强调最后一个键值对的后边不能出现 ',',也要确保最后一个键值对之后没有多余的 ',',以兼容各浏览器。