你如果想解析 JSON 數(shù)據(jù)并且顯示在頁面中,第一步肯定要先得到 JSON 接口文件的內(nèi)容。在 PHP 中獲取一個(gè)頁面的內(nèi)容,可以使用 fopen() 函數(shù)遠(yuǎn)程頁面然后使用fread() 函數(shù)循環(huán)獲取內(nèi)容。
假設(shè)接口文件頁面為:http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5 ,那么我們可以使用下面語句獲取這個(gè)接口文件內(nèi)容:
$handle = fopen("http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");$content = "";while (!feof($handle)) { $content .= fread($handle, 10000);}fclose($handle);
這樣 content 保存的就是 JSON api 內(nèi)容。
原始的內(nèi)容是無法直接調(diào)用的,必須被 PHP 進(jìn)行進(jìn)一步處理,才能被調(diào)用顯示在網(wǎng)頁中。在 PHP 5.2 及后續(xù)版本中,使用 json_decode() 函數(shù)來解析 JSON 數(shù)據(jù),將其轉(zhuǎn)換成 PHP 可以調(diào)用的數(shù)據(jù)格式。例如:
$content = json_decode($content);
解析之后呢,我們就可以按照 PHP 中調(diào)用數(shù)組數(shù)據(jù)的方法一樣的調(diào)用 JSON 中的數(shù)據(jù)。這個(gè)調(diào)用方法需要按照具體的 JSON 數(shù)據(jù)格式來寫,演示請(qǐng)看下面。關(guān)于 json_decode 函數(shù)的使用,具體看 PHP 手冊(cè),這里不再贅述:http://php.net/manual/en/function.json-decode.php
細(xì)心的朋友會(huì)發(fā)現(xiàn) 潛行者m 博客的邊欄最下面多了一個(gè)“友文推薦”模塊,里面推薦了一些瓊臺(tái)博客的文章。
友文推薦是瓊臺(tái)博客倡議的一種博客之間交流方式,比傳統(tǒng)的友情鏈接更有效,同時(shí)實(shí)現(xiàn)了博客內(nèi)容互補(bǔ)。由于瓊臺(tái)博客的博客程序是他自己本人編寫的,所以他提供了 JSON api 接口,可以獲取到最新的可推薦的文章。
本人使用 PHP 獲取這個(gè) JSON 接口,然后輸出到自己博客的邊欄中,下面來實(shí)戰(zhàn)操作一下。
調(diào)用之前,你肯定要看一下對(duì)方的 api 調(diào)用手冊(cè),包括調(diào)用地址、如何調(diào)用、數(shù)據(jù)輸出格式等等。瓊臺(tái)博客的 api 說明地址如下:http://www.qttc.net/openapi.html。
根據(jù)文檔,我使用了 http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5 這樣的參數(shù),意思就是調(diào)用五條他推薦的文章。
很簡單,上面說過了,具體代碼如下:
$handle = fopen("http://www.qttc.net/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");$content = "";while (!feof($handle)) { $content .= fread($handle, 10000);}fclose($handle);
先打開這數(shù)據(jù)文件,然后把所有內(nèi)容保存到 content 變量中,因?yàn)榭梢钥隙?api 數(shù)據(jù)不會(huì)超過 10000個(gè)字符,所以用 10000 作為 fread 函數(shù)的第二個(gè)參數(shù)。這樣,api 返回的 JSON 數(shù)據(jù)就保存在了 content 變量中。
使用下面代碼解析數(shù)據(jù),然后調(diào)用輸出
$content = json_decode($content);foreach ($content->data as $key) { echo '<li><a target="_blank" href="'.$key->b_url.'">'.$key->b_title.'</a></li>';}
首先對(duì) content 變量中的 JSON 數(shù)據(jù)處理,然后變成 PHP 可以調(diào)用的數(shù)據(jù),再使用 foreach 遍歷輸出這五條內(nèi)容,按照我需要的 HTML 格式,將內(nèi)容插入進(jìn)去即可。
再加上樣式修飾,這樣就完成了 獲取并解析 JSON 顯示在頁面中了。調(diào)用其它 api 數(shù)據(jù)的方法大同小異
聯(lián)系客服