使用for循环访问JSON对象

时间:2016-08-31 10:11:07

标签: angularjs json

这是我简化的JSON文件内容:

var data = response.data;
$log.log(data); //Object
$log.log(data.Table1); //Array
$log.log(data.Table1[0]); //Object
$log.log(data.Table1[1].h1); //587

这是我的控制台在Angular $ http调用之后输出的内容

for(var a in data){ //this one correctly loops 2 times
   for(var d in a){ //I have problem with this one
     $log.log(d.h1);
   }
}

我尝试了以下代码但未能获得该值。请帮忙。

private String capitalize(String name) {
    String s1 = name.substring(0, 1).toUpperCase();
    String nameCapitalized = s1 + name.substring(1).toLowerCase();
    return nameCapitalized;
}

4 个答案:

答案 0 :(得分:1)

您可以通过以下方式执行此操作: -

 $data = file_get_contents('your json data is here.json');
 $content = json_decode($data); 
 foreach($content as $row){
    foreach($row as $data_array){
      foreach($data_array as $item){
       echo 'H1 data item - '.$item->h1;
       echo '    H2 data item - '.$item->h2.'<br>';
        }
      }
   }

答案 1 :(得分:0)

它应该使用data[a]来获取内部对象。基本上你会通过key

访问对象
for(var a in data){
   for(var d in data[a]){ 
     $log.log(d.h1);
   }
}

答案 2 :(得分:0)

for (var a in data) a是关键,因此Table1Table2。实际值在数据[a]中。 此外,据我所知,你不能用for (var i in xx)方法遍历数组

for(var a in data){ //this one correctly loops 2 times
   for(var d = 0; d < data[a].length; d++){
     $log.log(data[a][d].h1);
   }
}

答案 3 :(得分:0)

首先,您遇到嵌套问题。您的结构是数据 - &gt;数组 - &gt;表 - &gt; H1。其次,按键进行迭代。因此,构造中的变量(myArr中的var i)是指元素键,而不是数组中的对象。因此,您案例中的整个结构可能如下所示

for(var a in data.array){
   for(var d in data.array[a]){
     console.log(data.array[a][d].h1);
   }
}

P.S。看看map()功能