【PHP】WebAPIのJSONファイルを読み込む

公開日: : PHP, WebAPI

スポンサーリンク

WebAPIでJSONファイルを使う機会があったので使い方をメモ。最近ではWebAPIはSNSやブログ、動画、音楽、写真などのメディア関係から郵便番号、地図、気象、交通網関係など幅広く使えるようになっているようです。

JSONファイルの取得

一応参考までに

//指定のURLから取得
$json = file_get_contents($url);
//JSONファイルは配列に変換しておく
$arr = json_decode($json,true);
//var_dumpで表示して確認(ここは不要)
echo "<pre>";
var_dump($arr);
echo "</pre>";

file_get_contentsで指定のURLのファイルを取得して来たら、json_decodeでJSON形式のものをPHP形式のものに変換します。第2引数をtrueにすると連想配列になります。(var_dumpのところはpreタグで挟むと綺麗に改行されます)

使用例

今回WebAPIの使用例として『HeartRails Express』という路線や駅関係を扱っているAPIを使わせていただきました。この記事を書いている2014年11月現在では商用、非商用問わず無料で使用できるAPIのようです。

取得できるデータは路線や駅、緯度経度からの最寄り駅検索などが使えますが、今回は『JR山手線』にある駅名一覧を取得して表示したいと思います。

JSONの情報の確認

指定の路線の駅情報を取得する時のURLはリファレンスを見ると次のようになっています。

http://express.heartrails.com/api/json?method=getStations&line=JR山手線

GET形式のリクエストでJSONを取得してきますが、中を見ると次のようなものになっていると思います。

{“response”:{“station”:[{“x”:139.738535,”next”:”大崎”,”prev”:”田町”,”y”:35.628135,”line”:”JR山手線”,”postal”:”1080075″,”name”:”品川”,”prefecture”:”東京都”},{(略)},{(略)}(略)}]}}

responseの中にstationがあり、stationの中に各駅の情報が羅列される形になっています。駅の情報としては駅名はもちろん、次の駅や前の駅、緯度経度、都道府県名などが格納されています。

PHPで表示する

$url = "http://express.heartrails.com/api/json?method=getStations&line=JR山手線";
//ファイルの内容の読み込み
$json = file_get_contents($url);
//連想配列にする
$arr = json_decode($json,true);
//駅情報だけ取得する
$station_array = $arr["response"]["station"];
//表示
echo "<pre>";
var_dump($station_array);
echo "</pre>";

array(29) {
[0]=>
array(8) {
["x"]=>
float(139.738535)
["next"]=>
string(6) "大崎"
["prev"]=>
string(6) "田町"
["y"]=>
float(35.628135)
["line"]=>
string(11) "JR山手線"
["postal"]=>
string(7) "1080075"
["name"]=>
string(6) "品川"
["prefecture"]=>
string(9) "東京都"
}
[1]=>
array(8) {

~~~~~~~~~~~~~(以下略)~~~~~~~~~~~~~

}
}

こんな感じで取得できます。なので適当に次のような路線名を引数にとり、駅情報の連想配列を返すような関数の形にしました。

function getStationArray($line_name){
    $url = "http://express.heartrails.com/api/json?method=getStations&line=".$line_name;
    //ファイルの内容の読み込み
    $json = file_get_contents($url);
    //連想配列にする
    $arr = json_decode($json,true);
    //駅情報だけ取得する
    $station_array = $arr["response"]["station"];
    return $station_array;
}

まとめ

近年便利なWebAPIが多く登場していますが、今回はJSON形式でデータを取得してくるものに絞って、駅情報を取得するAPIを例に使ってみました。

スポンサーリンク
Amazon
  • このエントリーをはてなブックマークに追加

関連記事

【PostgreSQL】psql version 8.4, server version 9.5

PostgreSQLを使おうとしたところ下記のような警告が出てきました。 -bash-4.1$

記事を読む

【PHP・MySQL】Fatal error: Class ‘mysqli’ not found

Fatal error: Class 'mysqli' not found このエラーはmys

記事を読む

【PHP】Simple HTML DOM Parserを使って指定Webページの記事タイトルを取得する

PHPのスクレイピングライブラリのSimple HTML DOM Parserを使って指定Webペー

記事を読む

【PHP】正規表現で日付文字列から曜日を削除する

例えば次のように曜日が記述された日付があったときその曜日部分を削除する場合のときの正規表現は次のよう

記事を読む

no image

【PEAR】Services_AmazonのItemLookupで複数ASINを指定する

Amazon Product Advertising APIをPEARのServices_Amazo

記事を読む

【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流れとしては指定のWebページH

記事を読む

【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようとしてheaderを指定したのに

記事を読む

スクレイピングをサポートしてくれるAPI【kimono】

kimonoというスクレイピングをAPI化してくれるという素晴らしいサービスがあります。

記事を読む

YoutubeのURLリンクを外部プレイヤーのものに正規表現で置換する

Youtubeのアドレスを正規表現を使って抽出して外部プレイヤーのフレームに変換・置換するスクリプト

記事を読む

【PHP】Simple HTML DOM Parserを使って属性の値を取得する

PHPでSimple HTML DOM Parserを使ったスクレイピングで指定の属性の値を取得する

記事を読む

Windowsユーザが初めてMacBookを購入したときの注意点や感想

最近12インチのMacBookを購入しました。今までWindowsしか

Redmine3.2をUbuntu14.04にインストールして躓いた所についてメモ

はじめに Ubuntu14.04 ServerにRedmine3.2

UWSCを使ったソフト自動立ち上げ【SoftEther VPN Server】

やりたいこと 最近SoftEtherという筑波大学発のベンチャー企業

【PHP】headerでContent-Typeを指定したのに効かない場合の対処法

PHPでサイトマップを作ろうと思い、XML形式のファイルを出力しようと

スマホ向け幅固定サイトの回転時の幅対応方法

幅固定サイトでのスマホ回転時Webサイトの横幅を合わせる方法のメモ。

【PHP】特定のURLからそのAtomやRSSのフィードを抽出する方法

特定のURLからRSSやATOMのフィードを抽出する方法をメモ。 流

フィード抽出ツール(RSS1.0、RSS2.0、atom)

任意URL サイト名 サイトURL RSS1.0

→もっと見る

  • Author : ががんぼ
    プログラミングやWeb関係で気付いたことについてメモしていく予定。だいたいが備忘録ですが、自分でサンプルを作って動かしてみたりしています。
PAGE TOP ↑