Javascript 访问嵌套的JSON值

Javascript 访问嵌套的JSON值,javascript,json,Javascript,Json,我试图从JSON对象访问某个值。我试图访问的值是从一个包含大量嵌套对象和数组的JSON对象启动->火箭->代理->abbrev。由于某种原因,我无法访问低于某个嵌套级别的值。下面是登录到控制台的JSON对象的屏幕截图 编辑: 以下是我尝试过的方法: data = JSON.parse(data); var agency = []; var names = []; var configuration = []; for(i = 0; i < data.launches.length;

我试图从JSON对象访问某个值。我试图访问的值是从一个包含大量嵌套对象和数组的JSON对象启动->火箭->代理->abbrev。由于某种原因,我无法访问低于某个嵌套级别的值。下面是登录到控制台的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); 
}
data=JSON.parse(数据);
var代理=[];
变量名称=[];
var配置=[];
对于(i=0;i

我可以访问“rocket”级别上的key:value对,但我不能访问嵌套在该级别下的任何内容。我调用数据的方式有问题吗?

从json对象的结构来看,您似乎需要一个机构索引。代码示例的最后一行应该可以工作

我想你会想要像这样的东西

for(j = 0; j < data.launches[i].rocket.agencies.length; j++){
  agency.push(data.launches[i].rocket.agencies[j].abbrev);
}
for(j=0;j

这样,如果没有代理,您就不会从json对象的结构中得到错误,看起来您需要一个代理的索引。代码示例的最后一行应该可以工作

我想你会想要像这样的东西

for(j = 0; j < data.launches[i].rocket.agencies.length; j++){
  agency.push(data.launches[i].rocket.agencies[j].abbrev);
}
for(j=0;j
这样,如果没有机构,您将不会得到错误

这就是有效的方法:

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);
    };
}
for(i=0;i
这就是成功的原因:

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);
    };
}
for(i=0;i
对于您的示例json,它将起作用。因此,您很可能有一部分json没有显示代理[0]不存在的地方。对于您的示例json,它将起作用。因此,您很可能有一部分json没有显示代理[0]不存在的地方。谢谢语法有点不对劲,但我能够对它进行足够的调整,使其正常工作!有道理,我需要另一个循环来确定代理对象的索引。没问题!很高兴我能帮忙!谢谢语法有点不对劲,但我能够对它进行足够的调整,使其正常工作!有道理,我需要另一个循环来确定代理对象的索引。没问题!很高兴我能帮忙!