这些是我的 JSON 对象。
({
"0":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86040788&",
"1":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87126537&",
"2":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F84915833&",
"3":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F87317484&",
"4":"http%3A%2F%2Fapi.soundcloud.com%2Ftracks%2F86548283&"
})
我用 Ajax 获取它们,这就是我获取它们的方式:
data[0]
到 data[4]
。
为什么 data.1
等不工作?我不明白为什么我可以像 data[0]
这样访问对象,因为它们不是数组。
最佳答案
Why is data.1, etc is not working?
那是因为根据 Javascript 的语法,data.1
是一个无效的语法。打开浏览器控制台并尝试:
var obj = {};
obj[0] = "test";
obj.0; //SyntaxError: Unexpected number
I don't get why I can acess the objects like this data[0], because they are not arrays.
在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)
关于php - 访问 JSON 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15983572/