【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
  • このエントリーをはてなブックマークに追加

関連記事

【PHP】usortのfunctionでCannot redeclare(再定義)される

初心者なのでusortがいいものかどうなのかよくわからないのですが、usortの関数定義をするとたま

記事を読む

【twitteroauth】TwitterAPIで検索して特定のつぶやきをしたユーザーを取得する方法【PHP】

twitteroauthを利用してワード検索して特定のつぶやきをしたユーザーを取得する方法です。tw

記事を読む

PEARをレンタルサーバーにインストールする

共用レンタルサーバーにPEARをインストールしたときにてこずったところについてメモ。今回レンタルサー

記事を読む

【PHP】dateで指定日前の日付を出力する

指定日前の日付の取得方法 date_default_timezone_set('Asia/

記事を読む

no image

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

Amazon Product Advertising APIをPEARのServices_Amazo

記事を読む

PHPでページリロードをしようと思ったができなかったので

header("Location: ".$_SERVER); とすればページをリロードでき

記事を読む

【CakePHP3】無関係な複数テーブルのデータを一つのコントローラで扱う

CakePHP3で一つのコントローラないでお互い独立したテーブルを扱うには単純にTableRegis

記事を読む

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

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

記事を読む

【MySQL・PHP】WHERE句とORDER BY句を使った#1064エラーについて

MySQLで次のようなクエリを出すとエラーとなって帰ってきました。 SELECT * from

記事を読む

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

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

記事を読む

NVIDIA DIGITSをSupervisorを使って自動起動する

はじめに 先日Ubuntu14.04にDIGITS 5をGPUなしP

【2017年度】GeForce 1080 Ti搭載BTOパソコン比較

はじめに 最近ディープラーニング用にGPUのないPCにDIGITSを

Windows用のシンプルなストップウォッチソフト紹介

Windows(10)でも使える使いやすいKAZAMITimerという

MNISTをDIGITS 5のCPUのみで試す(GPUなし)

はじめに DIGITSを使えばGUI操作で簡単にディープラーニングが

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

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

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

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

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

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

→もっと見る

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