如何在JQuery中迭代JSON数组

问题描述:

我有下面这种类型的数组。我想用JavaScript来迭代这个数组。这怎么可能?如何在JQuery中迭代JSON数组

{ 
"result": true, 
"data": [ 
{ 
    "ID": 1, 
    "stage_ID": 1, 
    "badge_type_ID": 1, 
    "name": "Despertar da Força", 
    "description": "Fazer a primeira SuperAtividade", 
    "type": "", 
    "image_static": "url123.jpg", 
    "image_animated": "", 
    "SQL": "", 
    "published": 1 
}, 
{ 
    "ID": 2, 
    "stage_ID": 1, 
    "badge_type_ID": 1, 
    "name": "Super 3", 
    "description": "Fazer 3 SuperAtividades", 
    "type": "", 
    "image_static": "urlimage123.png", 
    "image_animated": "", 
    "SQL": "", 
    "published": 1 
} 

我尝试了以下脚本,它返回 “未定义”, “不确定”。

$.getJSON('https://www.legiaodossuperpoderes.com.br/chronus/api/adm/badges', function(data) { 
     var output= "<ol>"; 
     for (var i in data) { 
      output += "<li>" + data[i].ID + "</li>" 
     } 
     output+="</ol>"; 
     document.getElementById("placeholder").innerHTML=output; 
    }); 

任何解决方案?谢谢!

+0

我想,'function(data)'包含整个对象。你需要参考对象的数据。 –

+0

尝试使用console.log(data)来检查从getJSON返回的数据 – Kelvin

+0

尝试'data = data.data'。而'data [i]'恰好是个错误,因为'i'是数组的非索引值。 – gdlmx

您可以尝试转换成JSON对象

$.getJSON('https://www.legiaodossuperpoderes.com.br/chronus/api/adm/badges', function(data) { 
     var output= "<ol>"; 
     var jsondata = $.JSON.parse(data); // Json object Convertion 
     for (var i in data) { 
      output += "<li>" + data[i].ID + "</li>" 
     } 
     output+="</ol>"; 
     document.getElementById("placeholder").innerHTML=output; 
    }); 

您试图访问使用数据[I] .ID未定义的属性。

当您从getJSON()函数得到响应时,您需要用名称调用响应,然后可以使用该名称访问任何内部属性。

现在如果你想迭代使用数据 myResponse变量的键/值,那么你需要这样做。

$.getJSON('https://www.legiaodossuperpoderes.com.br/chronus/api/adm/badges', function(myResponse) { 
    var output= "<ol>"; 
    var dataCount = myResponse.data.length; 
    for (var i = 0; i < dataCount; i++) { 
     output += "<li>" + myResponse.data[i].ID + "</li>"; 
    } 
    output+="</ol>"; 
    document.getElementById("placeholder").innerHTML=output; 
});