Javascript 遍历JSON对象
由于我对JSON和jQuery相当陌生,因此我很难通过一个对象进行迭代,我已经能够使用以下代码加载该对象:Javascript 遍历JSON对象,javascript,ajax,json,loops,each,Javascript,Ajax,Json,Loops,Each,由于我对JSON和jQuery相当陌生,因此我很难通过一个对象进行迭代,我已经能够使用以下代码加载该对象: $.ajax({ url: source, dataType: 'json', success: function(obj) { // Laat een succes-melding zien wanneer de data goed ingeladen is console.log("SUCCESS"); }, er
$.ajax({
url: source,
dataType: 'json',
success: function(obj) {
// Laat een succes-melding zien wanneer de data goed ingeladen is
console.log("SUCCESS");
},
error: function(obj) {
// Laat een error-melding zien wanneer de data niet goed ingeladen is
alert("ERROR");
},
complete: function(obj) {
console.log(obj);
}
});
不幸的是,JSON的结构对我来说有点复杂,但由于它是一个外部源(通过YQL),因此对此无法进行任何更改:
{
"query": {
"count": 1,
"created": "2013-06-21T11:42:57Z",
"lang": "en-US",
"diagnostics": {
"publiclyCallable": "true",
"url": {
"execution-start-time": "1",
"execution-stop-time": "1868",
"execution-time": "1867",
"proxy": "DEFAULT",
"content": "contentsource"
},
"user-time": "1868",
"service-time": "1867",
"build-version": "37740"
},
"results": {
"viewentries": {
"toplevelentries": "0",
"viewentry": [
{
"date": "2013-06-11",
"noteid": "A2FA",
"position": "1",
"siblings": "0",
"unid": "15D7F7A15C0DAE",
"entrydata": [
{
"columnnumber": "0",
"name": "Datum_van_instantie",
"text": "2013-06-11"
},
{
"columnnumber": "1",
"name": "kopregel",
"text": "Title of newsitem 1"
},
{
"columnnumber": "2",
"name": "tussenkopje",
"text": "Introduction text of newsitem 1"
},
{
"columnnumber": "3",
"name": "broodtekst",
"text": "Content of newsitem 1"
},
{
"columnnumber": "4",
"name": "imagetag",
"text": "Image URL of newsitem 1"
}
]
},
{
"date": "2013-05-29",
"noteid": "A2F6",
"position": "2",
"siblings": "0",
"unid": "9237CD3822ED8DD",
"entrydata": [
{
"columnnumber": "0",
"name": "Datum_van_instantie",
"text": "2013-05-29"
},
{
"columnnumber": "1",
"name": "kopregel",
"text": "Title of newsitem 2"
},
{
"columnnumber": "2",
"name": "tussenkopje",
"text": "Introduction text of newsitem 2"
},
{
"columnnumber": "3",
"name": "broodtekst",
"text": "Content of newsitem 2"
},
{
"columnnumber": "4",
"name": "imagetag",
"text": "Image URL of newsitem 2"
}
]
}
]
}
}
}
}
我想完成的事情是将类似于以下内容的内容打印到HTML文件中的一个元素:
Title of newsitem 1
Title of newsitem 2
我确信从那时起,我可以很好地从文件中提取其余的项目。对于我正在尝试的对我有意义的事情,在各种obj.viewentry[0]备选方案上使用$.each循环,我会得到一个未定义的错误。当我尝试访问更具体的内容时,例如
$.each(obj.viewentry, function(index, value) {
console.log(this.entrydata[0]);
});
我得到的返回是一个jQuery错误,TypeError:e是未定义的。虽然我相当肯定最后一段代码是“傻瓜jQuery”,但今天早上我一直在寻找的其他答案并没有给我更多的明确性。尝试使用以下代码:
$.each(obj.query.results.viewentries.viewentry, function (index, value){
$.each(value.entrydata, function (index, value) {
if (value.name == "kopregel") console.log(value.text);
});
});
它在这里工作:没有理由为此使用jQuery(ajax部分除外):
for(obj.query.results.viewentries.viewentry中的var viewEntryKey){
对于(var i=0;i
输出:
新闻项目1的标题新闻标题第2项
for (var viewEntryKey in obj.query.results.viewentries.viewentry) {
for (var i = 0; i < obj.query.results.viewentries.viewentry[viewEntryKey].entrydata.length; i++) {
if (obj.query.results.viewentries.viewentry[viewEntryKey].entrydata[i].name == 'kopregel') {
console.log(obj.query.results.viewentries.viewentry[viewEntryKey].entrydata[i].text);
}
}
}