【问题标题】:How do I load every section of a JSON file that has objects of objects?如何加载包含对象对象的 JSON 文件的每个部分?
【发布时间】:2014-11-24 15:03:38
【问题描述】:

我的 JSON 文件如下所示:

[{ "articles": [
    { "1": { "sections":
            [ {"1": "Lots of stuff here."} ]
        }
    },
    { "2": { "sections":
            [ {"1": "And some more text right here"} ]
        }
    }
}]

基本前提是它在整个数组中有一个元素叫做"articles",等于"sections"的数组。

换句话说,它是一部宪法,所以它看起来像这样:

第十条

-A部分

-B节

-C部分

第 Z 条

...

我希望能够拉出每篇文章并将其加载到

<div class="alert text-black" id="article">
  <p class="lead" id="articleHeader"><strong>Article 1</strong></p>
  <dl>
    <dt id="article_section">Section 1</dt>
    <dd id="article_sectionINFO">this stuff belongs to section 1</dd>
  </dl>
</div>

这是我目前的脚本:

var loadEvents = function(d){
$.each(d, function(i){
  var articleN = i;
  var articleID = "article" + i;
  var articleHeaderID = "articleHeader" + i;
  var articleHeader = "<p class='lead' id='articleHeader'><strong>Article " + i + "</strong></p>";
  var mySections = new Array();
  $.each(d, function(i){
    var sectionN = i;
    var sectionID = "article" + articleN + "section" + sectionN;
    var sectionINFO = sectionID + "INFO";
    mySections[k] =
    "<dt id='" + sectionID +"'> Section " + sectionN + "</dt>" +
    "<dd id='" + sectionINFO +"'>" + d[sectionN].
  })
  $("#eventHolder").append(new_block(articleID, articleHeaderID, articleHeader)); //to call the new element
})}

$.getJSON('data/constitution.json', loadConstitution);

基本上,我只是希望能够为每篇文章复制一个更大的框(如上面的&lt;html&gt; 代码所示),每个部分都有一个列表(&lt;dl&gt;&lt;/dl&gt;)。如何正确访问 JSON 文件中的数据?

【问题讨论】:

  • 一个不完整的问题如何获得投票?
  • @starskythehutch 我猜有些人只是瞥了一眼,看到那里发布的代码然后去“是的!这很好!” :(
  • 由于某种原因,它切断了我问题的最后一部分。我修好了。

标签: javascript jquery html json


【解决方案1】:

由于您有一个包含对象的数组,该对象包含 article 属性,该属性是包含文章的数组,您需要深入到该属性以循环它们。在回调函数中使用两个属性,以便您可以访问文章对象:

$.each(d[0].articles, function(i, article) {

由于每个项目都是一个包含sections 属性的对象,该属性是一个包含各个部分的数组,因此您需要深入了解每个项目中的该属性。为这些部分使用不同的索引变量,以便您仍然可以访问用于文章索引的i 变量:

var mySections = article.sections;
$.each(mySections, function(j, section) {

在该循环中,j 是部分的索引,section 是部分字符串,i 仍然是文章的索引。

这应该让你在循环中走上正确的轨道,其余的大部分只是为每个值使用正确的变量。

【讨论】:

  • 您能否举例说明我将如何访问部分数据?是d[j] 还是mySections[j]
  • @Luxelin:您可以使用mySections[j] 或简单地使用section 访问它。
  • pastebin.com/dinuR9kR 我使用了如上所示的相同 HTML 和相同的 JSON 文件,但这不起作用。你可以忽略第 31 行:document.write(thisSection);
  • @Luxelin:我没有在代码中看到任何错误。当你尝试它时会发生什么?您收到任何错误消息吗?
  • 不,调试器/控制台中没有任何错误。除了我上面写的模板,什么都没有显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 2012-09-04
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-19
相关资源
最近更新 更多