访问JSON对象属性

时间:2013-04-13 02:28:59

标签: php javascript ajax json

这些是我的JSON对象。

({
"0":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86040788&amp",
"1":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87126537&amp",
"2":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915833&amp",
"3":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87317484&amp",
"4":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86548283&amp"
})

我用Ajax获取它们,这就是我对它们的看法:

data[0]data[4]

为什么data.1等不起作用?我不明白为什么我可以访问像data[0]这样的对象,因为它们不是数组。

3 个答案:

答案 0 :(得分:3)

  

为什么data.1等不起作用?

这是因为data.1根据Javascript的语法是无效的语法。打开浏览器控制台并尝试:

var obj = {};
obj[0] = "test";
obj.0; //SyntaxError: Unexpected number

  

我不明白为什么我可以访问像这个数据[0]这样的对象,因为它们不是数组。

在javascript中,数组和map / dictionary / association数组是一回事。您可以使用object[key]语法或object.key语法进行访问。唯一的限制是它应该由解析器解析(它应该是一个标识符),否则它会失败 - 就像你拥有的情况一样。另一个例子:

var obj = {"test-data":1, "test": 2};
obj["test"]           // 2
obj.test              // 2
obj["test-data"];     // 1
obj.test-data         //ReferenceError: data is not defined
      //^ is a <MINUS> character, parsed as (obj.test - data)

答案 1 :(得分:1)

Working with objects: Objects and properties

  

对象属性名称可以是任何有效的JavaScript字符串,或   任何可以转换为字符串的东西,包括空字符串   串。 但是,任何不是有效JavaScript的属性名称   标识符(例如,具有空格或短划线的属性名称,或   以数字开头)只能使用方括号访问   符号。当属性名称为时,此符号也非常有用   动态确定(未确定属性名称时)   直到运行时)。示例如下:

答案 2 :(得分:0)

因为json var name无法从数字

开始