我试图浏览reddit的API。我看到了fiddle,他们从网站上抓取了图片网址。但是,我对他们如何获取物品本身感到困惑。在他们的each()
语句中,他们使用了data.data.children
和item.data.url
,但是我无法在json中的另一个数据对象http://www.reddit.com/r/pics.json
之后找到数据对象。我也没有看到item.data.url
。如果我从一开始看(两个第一个对象是" kind"和"数据")。这是什么意思?
答案 0 :(得分:4)
鉴于小提琴中的代码:
$.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
,而不是将其从该结构的内容中消除歧义,因此{{ 1}}指的是在JSON的第一级中名为foo.data
的子元素。
data
参数表示数组item
中的每个元素,因此第一项的foo.data.children
将等同于JSON中的item.data.url
。
答案 1 :(得分:1)
返回的JSON结构是:
{
data: {
after: "",
before: null,
children: [
{
data: {
url: ""
}
},
...
],
modhash: ""
},
kind: "Listing"
}
结果变量的名称在回调函数参数中称为data
。所以要找到你需要输入的孩子:
data.data.children;
接下来,在$.each
循环中,children
数组中的每个条目都分配给该回调函数中的item
变量。它是从那里深入到url
。 property(item.data.url
)。
如果data.data
令人困惑,您可以将这些命名为。