【发布时间】:2019-09-04 05:33:07
【问题描述】:
我正在尝试以 JSON 格式访问数组的数组中的元素,但我收到了undefined。
错误 - 未捕获的类型错误:无法读取第 1 行未定义的属性“lsi_short_name”。 9 $("#jsondata").append(
代码如下:
var data = '{"response":[[{"1":{"type":"p","lsi_short_name":"A","entities":["term_Quantity"]}}, {"2":{"type":"p","lsi_short_name":"B","entities":["term_Quantity"]}}, {"4":{"type":"d","lsi_short_name":"D","entities":["term_Quantity"]}}, {"5":{"type":"p","lsi_short_name":"E","entities":["term_Quantity"]}}], [{"1":{"type":"p","lsi_short_name":"A","entities":["term_Quantity"]}}, {"2":{"type":"p","lsi_short_name":"B","entities":["term_Quantity"]}}, {"4":{"type":"d","lsi_short_name":"D","entities":["term_Quantity"]}}, {"6":{"type":"p","lsi_short_name":"F","entities":["term_Quantity"]}}]]}';
var obj = JSON.parse(data);
for(i=0;i<obj.response.length;i++) {
for (j=0; j < obj.response[i].length; j++) {
$("#jsondata").append("<li onclick=jsonDetails('"+obj.response[i][j][j+1]['lsi_short_name'] +"','"+ obj.response[i][j][j+1]['entities']+"','"+ obj.response[i][j][j+1]['attributes']+"')>"+obj.response[i][j][j+1]['lsi_short_name']+"</li>");
}
$("#jsondata").append("<br>");
}
提前致谢。
【问题讨论】:
-
@Jaromanda 但它显示了除第 2 个数组的 2 个元素以外的所有元素的结果
-
你需要在开始内部for循环之前捕获元素。
-
好的……刚刚意识到你这样做了……但是你的循环看起来不对
-
哦,我明白了,里面有一个带有数字键的 OBJECT,它不是数组
-
索引 0 有一个键为 1 的对象 - 所以 [j][j+1] 将起作用,类似地,索引 1 有一个键为 2 的对象。但索引 2 有一个键为 4 的对象,并且 3 有 5 ......它们是加号......在结果 [0] ......在结果 [1] 你的对象有键 1,2,4,6 ......同样前两个可以工作,但是最后两个不会
标签: javascript arrays json parsing