0

有两行 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] 没有定义。

提前致谢

4

3 回答 3

1

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

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

改变这个:

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

对此:

alert(finalobj.leftnav[0].navtitle);
于 2013-04-19T12:49:46.000 回答
0

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

于 2013-04-19T12:51:03.260 回答
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);

尝试这个。

于 2013-04-19T12:54:19.567 回答