2009/12/25

[php][Google Ajax Search API]JSONのパース

前回、phpを使ってサーバー上でgoogleのイメージ検索を行う処理を書きました。

今回は、その結果を解析する方法から書きたいと思います。

解析方法は、めちゃくちゃ簡単で、

$json = json_decode($body);

json_decode関数を使えばオッケー♪
($bodyは、前回の内容を参照されたい)

関数の戻り値(この場合は、$json)はオブジェクトの可能性があるので、var_dump関数を使って解析を行えば、戻り値の型が表示されるのでそれに従って各値を取得すればオッケーだと思います。

ちなみに、Google Ajax Search APIの場合の戻り値の構成は、こちらこちらを参照してください。

サンプルとして、画像のurlを取得し、それを表示するプログラムは、こんな感じになります。
//検索文字列の設定
$url_string = "ジェシカ アルバ";
//urlエンコード
$url_string = urlencode($url_string);
$url = "http://ajax.googleapis.com/ajax/services/search/images";
$url = $url."?v=1.0";
$url = $url."&key=取得したapi-key";
$url = $url."&rsz=large";
$url = $url."&q=".$url_string;

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://・・・.php");
$body = curl_exec($ch);
curl_close($ch);

/* ここからが今回新しく追記したところ */
// now, process the JSON string
$json = json_decode($body);
//ステータスコードが200以外の場合はエラー
if($json->responseStatus != 200){
//エラー処理を記述
exit();
}

$responseData = $json->responseData;
$results = $responseData->results;
for($i=0;$i<count($results);$i++){
$current_result = $results[$i];
print("<img src='".$current_result->url."'><br>");
}

exit();

基本的には、戻り値がstClassなのでフィールドアクセスが多いと思います。

他にもいろいろと戻り値があるので、いろいろと表示してみて遊んでみてください。

0 コメント:

コメントを投稿