簡體   English   中英

訪問嵌套的JSON值

[英]Accessing nested JSON value

我正在嘗試從JSON對象訪問某個值。 我試圖訪問的值是來自具有大量嵌套對象和數組的JSON對象的launchs-> rocket-> agencies-> abbrev。 由於某種原因,我無法訪問低於某個嵌套級別的值。 這是在控制台中登錄的JSON對象的屏幕截圖。

JSON對象屏幕快照http://prntscr.com/c6ym11編輯: 鏈接到圖像,因為嵌入無效

這是返回數據中JSON格式示例的鏈接

這些是我嘗試過的方法:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM