打印

SJ9006: 在 IE6 IE7 IE8(Q) 中不能在 JSON 字符串或对象直接量的最后一个键值对后加 ','

作者:孙东国 钱宝坤

标准参考

JSON(JavaScript Object Notation)是一种易于人们阅读和编写、同时也易于机器解析和生成的轻量级的数据交换格式。它是基于 JavaScript Programming LanguageStandard 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) 浏览器中会导致脚本中断。

解决方案

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

参见

知识库

相关问题

测试环境

操作系统版本: Windows 7 Ultimate build 7600
浏览器版本: IE6
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
测试页面: json.html
本文更新时间: 2010-07-23

关键字

JSON 对象 直接量 逗号