【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を例に使ってみました。

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

関連記事

WordPressサイトのSSL対応(HTTPS化)手順のまとめ【さくらサーバー】

先週頃にこのサイトをSSL対応しましたのでその流れについてまとめておき

【Google Charts】動的にグラフを更新する方法

はじめに Webサイト上でグラフを描こうと思った場合、いくつかのJa

体重変化量計算シミュレータ【ダイエット/肥満】

ツール本体 入力 カロリー入力 1日の余剰摂取/消費カロリー

おサイフケータイ対応ストレージ32GBのSIMフリースマホまとめ【2017年秋版】

はじめに SIMフリーの格安スマホのおサイフケータイ機能付きのもので

リクルート期間限定ポイントの有効な使い道

はじめに  先日クレジットカードの見直し活動の一環でポイント還元率の

初心者がお金を貯めるための節約・財テク手法まとめ【ポイント還元・投資・税金対策】

はじめに  最近なるべく節約しようと思い、お金周りに関して色々調べて

動画講座を効率的にキャプチャして復習する方法

はじめに  最近、動画媒体の講座などをたまに視聴しています。独学だと

→もっと見る

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