数字是否在JSON中作为名称有效

时间:2015-04-14 10:25:01

标签: javascript json

以下代码段在IE 10 JS控制台和Chromes JS控制台中执行。 fiddle

 alert({123:"ABC"}[123]);

然而,当通过linter(例如jslint.com)运行时,它会抱怨。

当我阅读json.org中的文档时,我理解以下内容 enter image description here

表示在JSON对象中使用数字作为名称是不正确的。那么这是否意味着至少V8和Chakra引擎不正确?或者这与严格模式有关(如果确实如此,当我在节点中测试时它似乎没有任何效果)?

3 个答案:

答案 0 :(得分:3)

您将Javascript文字语法与JSON语法混淆。 JSON是Javascript文字语法的受限子集。

可以找到ECMAScript对象初始化程序的规范here。它包含以下产品:

PropertyName :
    IdentifierName
    StringLiteral
    NumericLiteral

因此允许使用数字作为属性名称。

答案 1 :(得分:0)

以下是正确的:

var jsonString = {"123":"ABC"};
alert(jsonString[123]);

您必须添加引号。

您可以在http://www.json.org/

找到相关文档

答案 2 :(得分:0)

您可以使用数字名称作为字符串,例如{"123":"ABC"}是有效的JSON,而{123:"ABC"}是有效的Javascript表达式