[英]Accessing JSON Object property
這些是我的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]
這樣的對象,因為它們不是數組。
為什么data.1等不起作用?
那是因為根據Javascript的語法, data.1
是無效的語法。 打開瀏覽器控制台並嘗試:
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)
對象屬性名稱可以是任何有效的JavaScript字符串,也可以是可以轉換為字符串的任何內容,包括空字符串。 但是,任何不是有效JavaScript標識符的屬性名稱(例如,具有空格或破折號的屬性名稱,或以數字開頭)只能使用方括號表示法訪問。 當要動態確定屬性名稱時(直到運行時才確定屬性名稱),此表示法也非常有用。 示例如下:
因為json var name無法從數字開始
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.