[英]Is it always required to call an object all the way through the chain (or in order)?
我正在尝试浏览reddit的API。 我看过一个小提琴 ,他们从网站上获取图像URL。 但是,我对它们如何获取对象本身感到困惑。 在他们的each()
语句中,他们使用了data.data.children
和item.data.url
,但是我无法在json的另一个数据对象之后的http://www.reddit.com/r/pics.json
找到数据对象http://www.reddit.com/r/pics.json
。 我也没有看到item.data.url
。 如果我从一开始就看(前两个对象是“种类”和“数据”)。 这是什么意思?
鉴于小提琴中的代码:
$.getJSON("http://www.reddit.com/r/pics/.json?jsonp=?", function(data) {
$.each(data.data.children, function(i,item){
$("<img/>").attr("src", item.data.url).appendTo("#images");
});
});
data
和item
都是函数参数,它们的名称与JSON中的任何命名键都没有关系。
参数data
表示整个JSON结构,但由于它只是一个名称不重要的参数,因此我将其命名为foo
以便将其与该结构的内容区foo.data
来,因此foo.data
在第一个foo.data
引用了名为data
的子元素。 JSON级别。
的item
参数表示在阵列中的每个元件foo.data.children
,所以item.data.url
的第一个项目将相当于data.children[0].data.url
的JSON内。
返回的JSON的结构为:
{
data: {
after: "",
before: null,
children: [
{
data: {
url: ""
}
},
...
],
modhash: ""
},
kind: "Listing"
}
结果变量的名称在回调函数参数中称为data
。 因此,要找到孩子,您需要输入:
data.data.children;
接下来,在$.each
循环中, children
数组中的每个条目都分配给该回调函数中的item
变量。 从那里您可以深入到url
。 属性( item.data.url
)。
如果data.data
令人困惑,则可以data.data
命名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.