12.2.3 理解Flickr JSON Feed
正如11.4节所介绍的,JSON只不过是一个JavaScript对象直接量。它可能像下面这样简单:
{
firstName:'Bob',
lastName:'Smith'
}
在这段代码中,firstName充当一个值为Bob的键,这是一个简单的字符串值。然而,这个值也可以是另一个对象(参见图11-10),因此,你可能经常得到一个复杂的嵌套式结构。这就是Flickr JSON Feed的样子。下面是这些feed之一的一小段。它展示了用来获取两张照片的信息:
1{
2"title":"Uploads from Smithsonian Institution",
3"link":"http://www.flickr.com/photos/smithsonian/",
4"description":"",
5"modified":"2011-08-11T13:16:37Z",
6"generator":"http://www.flickr.com/",
7"items":[
8{
9"title":"East Island, June 12,1966.",
10"link":"http://www.flickr.com/photos/smithsonian/5988083516/",
11"media":{"m":"http://farm7.static.flickr.com/6029/5988083516_bfc9f41286_m.jpg"},
12"date_taken":"2011-07-29T11:45:50-08:00",
13"description":"Short description here",
14"published":"2011-08-11T13:16:37Z",
15"author":"nobody@flickr.com(Smithsonian Institution)",
16"author_id":"25053835@N03",
17"tags":"ocean birds redfootedbooby"
18},
19{
20"title":"Phoenix Island, April 15,1966.",
21"link":"http://www.flickr.com/photos/smithsonian/5988083472/",
22"media":{"m":"http://farm7.static.flickr.com/6015/5988083472_c646ef2778_m.jpg"},
23"date_taken":"2011-07-29T11:45:48-08:00",
24"description":"Another short description",
25"published":"2011-08-11T13:16:37Z",
26"author":"nobody@flickr.com(Smithsonian Institution)",
27"author_id":"25053835@N03",
28"tags":""
29}
30};
31}
Flickr的JSON对象通常拥有一些关于feed的信息:这是初始的内容,包括“title”、“link”等。“title”元素(第2行)是该feed的名称。在这个例子中,就是“Uploads from Smithsonian Institution”,而“link”元素(第3行)指向了Smithsonian institution的Flickr主页面。例如,我们可以使用这些信息,作为显示照片之前的标题栏来展示。
要访问这些信息,我们使用本书2.10节所介绍的点语法。例如,假设使用前面小节中的代码:匿名函数用来处理存储在变量名data中的JSON反馈数据(参见12.2.2节的第2行)。然后,要访问feed的标题,可以像下面这样访问“data”对象的“title”属性:
data. title
这个feed的最重要的部分是“items”属性(第7行),它包含了额外的对象,每个对象都包含了关于一张照片的信息。例如,第8~18行提供了一张照片的信息,而第19~29行是关于另一张照片的信息。在每个item对象中,我们都可以看到其他的属性,例如照片的标题(第9行),到该照片的Flickr页面的一个链接(第10行),照片的拍摄日期(第12行),一段说明(例如,第13行的“Short description here”(Smithsonian的管理员肯定是那天有点偷懒而没有填它))等。
对于每张照片来说,另一个重要的元素是“media”,这是另一个对象。例如:
{
"m":"http://farm7.static.flickr.com/6029/5988083516_bfc9f41286_m.jpg"
}
M表示“medium”,其值是到照片的一个URL。Flickr照片常常有不同的大小,例如,medium、thumbnail和small(这是一个很小的方形图像)。如果你想要在页面上显示一幅图像,那么,这个URL就是你需要的内容。你可以使用它在一个页面中插入一个<img>标签,并且指向Flickr服务器上的照片。在后面的教程中,我们将会看到如何做到这点。