2016-04-09 46 views
0

我有以下的JSON表示:为什么我不能使用点符号访问JSON字典元素?

var collectionCopy = JSON.parse(JSON.stringify(
{ 
    1 : { 
     2: "2" 
    } 
} 
)); 

为什么不能我访问键 “2” 使用点符号(即collectionCopy.1.2)?

+0

这只是一个对象,现在你已经解析了它。使用'collectionCopy ['1'] ['2']' – Andy

+0

你需要使用collectionCopy ['1'] ['2']它不知道你的意思是字符串不是实际的数字 – JordanHendrix

+0

要作为collectionCopy.1访问,属性1是不是有效的JavaScript标识符。您只能使用带点符号的有效JavaScript标识符的属性。 – randominstanceOfLivingThing

回答

-1

这是因为键是字符串不是实际数字:

访问它的使用方法:

collectionCopy[1][2] 

collectionCopy['1']['2'] 

Relevant docs on accessing properties

+0

但是当我有一个正常的对象'var newObject = {1:{2:“2”}};',我可以使用点符号'newObject.1.2'。这是因为我有'.stringify()'吗?或者JSON将密钥的每个键和值都变成字符串? 谢谢你的文档,我读过它们。 –

+0

你能告诉我哪里工作?我只是试了一下,我不能得到它的工作: https://jsbin.com/tevebi/1/edit?js,console – JordanHendrix

+0

我认为它应该工作:DI认为我只是混淆简单的语法'newObject .1.2'不起作用,它不应该,但如果我有这样的对象'var newObject = {one:{two:“2”}}''console.log(newObject.one.two)'print '“2”'到控制台。 –

0

您可以使用点符号用于仅在语言中的有效标识符上访问对象的属性。

而且由于数字(或任何以数字开头的内容)不是有效的标识符,只能使用括号表示法来访问它(作为对象的属性)。

相关问题