【问题标题】:How can I access this nested array within my JSON object?如何在我的 JSON 对象中访问这个嵌套数组?
【发布时间】:2010-06-17 04:14:04
【问题描述】:

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

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

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

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

但是,我无法访问 child1, child2, childparent1。单独提醒密钥会显示“parent1”,但是当我尝试提醒它的内容时,我得到了未定义。

我认为它会给我一个对象/数组?如何访问 parent1 的孩子?

数据[键][0] ?

【问题讨论】:

    标签: javascript json arrays object


    【解决方案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]);
    

    【讨论】:

    • 除非我的眼睛欺骗了我,唯一的区别是您将 parent1[] 重命名为 parent1,将 parent2[] 重命名为 parent2。这将如何修复代码? :/ “父母”是我的 HTML 表单中输入的名称。输入是数组,因此用 [] 命名。
    • 好的,所以你不必像我一样重命名。但是您仍然可以通过以下方式访问它们: for (var i = 0; i
    【解决方案2】:

    您只是在对象中迭代一个级别,因此您只看到父母是正确的。您需要深入到这些键中才能找到孩子。

    // 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。

    【讨论】:

      【解决方案3】:

      您可以将它分配到一个变量中,如下所示:

      var = data[key];

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

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-13
        • 2017-11-27
        • 1970-01-01
        • 2017-12-26
        • 1970-01-01
        • 1970-01-01
        • 2018-04-05
        • 2018-08-28
        相关资源
        最近更新 更多