帮助JSON迭代

时间:2011-07-17 12:18:11

标签: javascript json

我正在尝试从JSON响应中检索一些数据,但这似乎不起作用:

我的javascript代码:

  function recommend(response){

    var recommendedList = eval('(' + response.responseText + ')');

    $H(recommendedList).each(function(item){
          alert(item.artist);
        });     
  }

我想要的是从JSON响应中检索每个艺术家的值。

,JSON响应的格式为:

[
 {"artist":"artist1","location":{"lat":"50.952226","lng":"5.34832","ID":28}},
 {"artist":"artist2","location":{"lat":"52.362287","lng":"4.883965","ID":32}},
  ...
]

一点帮助会很棒。谢谢!

4 个答案:

答案 0 :(得分:3)

我不确定你的$H()函数应该做什么(以及它的存在makes me very sad),但这个与框架无关的代码似乎可以完成工作:

for (var index = 0; index < recommendedList.length; index++) {
    alert(recommendedList[index].artist);
}  

以下是一个工作示例:http://jsfiddle.net/VgPy5/

另外,我确信你会因为那样使用eval()而受到严厉批评。您可以考虑使用JSON.parse()代替。

答案 1 :(得分:1)

从“$ H()”猜测你正在使用原型,我只是摆脱了“$ H()”因为数组应该已经可以迭代了。

recommendedList.each(function(item) {
  alert(item.artist);
});

答案 2 :(得分:1)

当您需要简单的东西时,请避免使用框架功能。

for(i=0; i<recommendedList.length; i++) { 
    alert(recommendedList[i].artist);
}

答案 3 :(得分:0)

http://www.prototypejs.org/api/hash/each

  

pairs作为迭代器的第一个参数传递,形式为   具有两个属性的对象:

     

key,这是键名作为String

     

值,这是相应的值(并且可能是未定义的)

所以你的item实际上是关键。相反,迭代如:

$H(recommendedList).each(function(key, item){
      alert(item.artist);
    });