如何在JSON对象中访问此嵌套数组?

时间:2010-06-17 04:14:04

标签: javascript json arrays object

我正在使用PHP返回一个json_encode()'d数组,以便在我的Javascript代码中使用。它被返回为:

{"parent1[]":["child1","child2","child2"],"parent2[]":["child1"]}

通过使用以下代码,我可以访问parent2 > child1

$.getJSON('myfile.php', function(data)
{
   for (var key in data)
   {
      alert(data[key]);
   }
}

但是,这不允许我访问child1, child2, child parent1。警告键本身显示'parent1',但当我尝试提醒它的内容时,我得到了未定义。

我想它会给我一个对象/数组?如何访问parent1的子项?

data [key] [0]?

3 个答案:

答案 0 :(得分:1)

返回的JSON应为:

{"parent1":["child1","child2","child2"],"parent2":["child1"]}

然后你可以访问它们:

var data = {"parent1":["child1","child2","child2"],"parent2":["child1"]}
alert(data['parent1'][0]);
alert(data['parent1'][1]);
alert(data['parent1'][2]);

答案 1 :(得分:1)

你只是在对象中迭代一个级别,所以你只看到父母是正确的。你需要下载这些键才能找到孩子们。

// Generally, avoid the "foreach" form in JavaScript.
for (var i = 0; i < data.length; i++) {
  alert(data[i]); // Parent1[], Parent2[], etc

  var parent = data[i];

  for (var j = 0; j < parent.length; j++) {
    alert(parent[j]); // Child1, Child2, etc
  }
}

除此之外,父键上的[]后缀是可以的。它有效的JSON。

答案 2 :(得分:0)

您可以按如下方式将其分配给变量:

var = data [key];

然后使用数组的大小获取数组的内容。

希望有所帮助。