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

関連記事

source_php

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

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

記事を読む

encodingtype

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

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

記事を読む

source_php

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

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

記事を読む

twitterimage

Twitterアカウントのアクセストークンを取得する方法

TwitterでBotなどを作るときアクセストークンとコンシューマキーが必要になります。 ざっくり

記事を読む

branch-67844_640

【TwitterOauth】特定のつぶやきを取得してリツイート数順やランダム順にする【PHP】

TwitterOauthを利用して特定のワードをつぶやいたデータを取得してそれをリツイート順なりに並

記事を読む

mailsendtest

【PHP】file_get_contentsでリンク元などのヘッダ情報を変更する

file_get_contentsで他サイトの情報を読み取る際などでリンク元を明記したい場合は以下の

記事を読む

twittersearch

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

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

記事を読む

database-152091_960_720

【PostgreSQL】psql version 8.4, server version 9.5

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

記事を読む

Youtube-Image

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

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

記事を読む

PAK86_atamakakaerujyosei20140125500-thumb-500xauto-4730

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

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

記事を読む

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

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

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

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

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

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

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

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

computer_server
格安プラン限定レンタルサーバー機能比較表(2016年)

はじめに  最近新しい共用サーバーをレンタルしようと思い調査およびそ

school_toshokan_hondana
kindle unlimitedが便利だったのでお勧めの使い方など感想メモ

 kindle unlimitedというサービスが8/3からAmazo

TAKEBE055122558_TP_V
寝る前にスマホを見ると斜視になる可能性とその対策

はじめに  寝る前などスマホを横になりながら見続けると斜視になる可能

→もっと見る

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