在第二次迭代中获取JSON数据会引发错误

时间:2013-04-19 12:45:14

标签: jquery json

有两行JSON数据存储为字符串

First Row - {"content":[{"title":"Test1","desc":"Team1","image":"http://team.jpg"}],"leftnav":[{"navtitle":"Nav One","navdesc":"One Link","navimage":"http://plan.jpg"}]} 

Second Row - {"content":[{"title":"Test2","desc":"Team2","image":"http://group.jpg"}],"leftnav":[{"navtitle":"Nav Two","navdesc":"Two Link","navimage":"http://graph.jpg"}]} 

使用每个函数我遍历每一行并尝试访问数据,如下所示

其中“resultRegionArr”是对象的对象

$(resultRegionArr).each(function(x){

var str = resultRegionArr[x].testdata;// str is assigned each row at a time
var finalobj = JSON.parse(str); // String is been converted to objects
alert(finalobj.leftnav[x].navtitle);

}

第一次迭代,即finalobj.leftnav [0] .navtitle我能够得到正确的结果 - Nav One

第二次迭代,即finalobj.leftnav [1] .navtitle我收到错误finalobj.leftnav [x]未定义。

提前致谢

3 个答案:

答案 0 :(得分:1)

那是因为没有leftNav [1]。您的数组只包含一个对象:

"leftnav":[{"navtitle":"Nav Two","navdesc":"Two Link","navimage":"http://graph.jpg"}]

改变这个:

alert(finalobj.leftnav[x].navtitle);

到此:

alert(finalobj.leftnav[0].navtitle);

答案 1 :(得分:0)

此代码没有意义。使用foreach应该将值作为回调函数中的第一个参数返回。你可以使用那个值来做事。其次,使用最后一行中的x值看起来很奇怪,因为它用于在解析的JSON中检索某些内容,同时您还使用它从初始数组中检索数据。总而言之,我认为您首先需要重新考虑代码。

答案 2 :(得分:0)

var str = resultRegionArr[x].testdata;// str is assigned each row at a time
var finalobj = JSON.parse(str); // String is been converted to objects
alert(finalobj.leftnav[0].navtitle);

试试这个。