[英]Accessing nested JSON value
我正在嘗試從JSON對象訪問某個值。 我試圖訪問的值是來自具有大量嵌套對象和數組的JSON對象的launchs-> rocket-> agencies-> abbrev。 由於某種原因,我無法訪問低於某個嵌套級別的值。 這是在控制台中登錄的JSON對象的屏幕截圖。
JSON對象屏幕快照http://prntscr.com/c6ym11編輯: 鏈接到圖像,因為嵌入無效
這些是我嘗試過的方法:
data = JSON.parse(data);
var agency = [];
var names = [];
var configuration = [];
for(i = 0; i < data.launches.length; i++){
//This works just fine
names.push(data.launches[i].name);
//This also works
configuration.push(data.launches[i].rocket.configuration);
//This returns undefined
agency.push(data.launches[i].rocket.agencies.abbrev);
//This generates Uncaught TypeError: Cannot read property 'abbrev' of undefined
agency.push(data.launches[i].rocket.agencies[0].abbrev);
}
我可以訪問“火箭”級別上的key:value對,但不能訪問嵌套在該級別以下的任何東西。 我如何調用數據有問題嗎?
從json對象的結構來看,您似乎需要機構的索引。 您的代碼示例的最后一行應該起作用。
我想你會想要像
for(j = 0; j < data.launches[i].rocket.agencies.length; j++){
agency.push(data.launches[i].rocket.agencies[j].abbrev);
}
這樣,如果沒有代理商,您將不會收到錯誤消息
這是有效的:
for(i = 0; i < data.launches.length; i++){
for(j = 0; j < data.launches[i].rocket.agencies.length; j++){
company.push(data.launches[i].rocket.agencies[j].abbrev);
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.