我最初的项目只有一个级别的JSON数据,但是它已经增长了,我需要第二个嵌套层。

从我的研究看来,我可以简单地采用原始的object.name并将其添加到我需要创建的新成员级别上,例如object.members.name。但是,这会弹出未定义的错误。

显然有什么地方不对,我现在已经挠了一段时间。

我检查了JSON格式,将其格式化了很多次,并通过了验证器(检查出OK),在控制台中未显示任何错误,我进行的任何搜索似乎都带来了比我更复杂的情况。我似乎无法缩小问题所在。

任何帮助或指示将不胜感激!

以下是代码块:


多级不工作
单层工作




无效的多级JSON数据版本



var obj =
{
  "results": [
    {
        "members": [
          {
          "name": "John Smith",
          "state": "NY",
          "phone": "555-555-1111"
        },
        {
          "name": "Mary Jones",
          "state": "PA",
          "phone": "555-555-2222"
        },
        {
          "name": "Edward Edwards",
          "state": "NY",
          "phone": "555-555-3333"
        },
        {
          "name": "Abby Abberson",
          "state": "RI",
          "phone": "555-555-4444"
        }
      ]
    }
  ]
};


$(obj.results).each(function(k,object){

  var output = $("div.output");
  output.append(object.members.name + " ");
  output.append(object.members.phone + "<br />");

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="output"></div>







工作单级JSON数据版本



var obj = {
  "results": [

      {
      "name": "John Smith",
      "state": "NY",
      "phone": "555-555-1111"
    },
    {
      "name": "Mary Jones",
      "state": "PA",
      "phone": "555-555-2222"
    },
    {
      "name": "Edward Edwards",
      "state": "NY",
      "phone": "555-555-3333"
    },
    {
      "name": "Abby Abberson",
      "state": "RI",
      "phone": "555-555-4444"
    }

  ]
};


$(obj.results).each(function(k,object){

  var output = $("div.output");
  output.append(object.name + " ");
  output.append(object.phone + "<br />");

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="output"></div>

最佳答案

嵌套每个语句?



var obj = {
  "results": [{
    "members": [{
        "name": "John Smith",
        "state": "NY",
        "phone": "555-555-1111"
      },
      {
        "name": "Mary Jones",
        "state": "PA",
        "phone": "555-555-2222"
      },
      {
        "name": "Edward Edwards",
        "state": "NY",
        "phone": "555-555-3333"
      },
      {
        "name": "Abby Abberson",
        "state": "RI",
        "phone": "555-555-4444"
      }
    ]
  }]
};


$(obj.results).each(function(k, result) {

  var output = $("div.output");
  $(result.members).each(function(index, member) {
    output.append(member.name + " ");
    output.append(member.phone + "<br />");
  })

});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="output">

</div>





当然,我会避免使用“对象”或“ obj”之类的名称-而是使用result和member。记忆更多。您将确切知道它指的是什么。

10-07 19:17
查看更多