我的JSON文件如下所示:
[{ "articles": [
{ "1": { "sections":
[ {"1": "Lots of stuff here."} ]
}
},
{ "2": { "sections":
[ {"1": "And some more text right here"} ]
}
}
}]
基本前提是它在整个数组中有一个名为"articles"
的元素,它等于"sections"
的数组。
换句话说,它是一种宪法,所以看起来像这样:
第十条
-Action A
- 第B节
-Section 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);
基本上,我只希望能够为每篇文章重现一个更大的框(如上面的<html>
代码所示),每个部分都有一个列表(<dl></dl>
)。如何正确访问JSON文件中的数据?
答案 0 :(得分:4)
由于您的数组包含一个包含article
属性的对象,该属性是包含文章的数组,因此您需要使用该属性来循环它们。在回调函数中使用两个属性,以便您可以访问文章对象:
$.each(d[0].articles, function(i, article) {
由于每个项目都是包含sections
属性的对象,该属性是包含这些部分的数组,因此您需要在每个项目中使用该属性。为这些部分使用不同的索引变量,这样您仍然可以访问用于文章索引的i
变量:
var mySections = article.sections;
$.each(mySections, function(j, section) {
在该循环中,j
是该部分的索引,section
是部分字符串,i
仍然是该文章的索引。
这应该让你在循环中走上正轨,其余的主要是为每个值使用正确的变量。