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服务器上的照片。在后面的教程中,我们将会看到如何做到这点。