JSONデータを取得する[json_decode][カーリルAPI]

2016年3月21日

PHP

カーリルの図書館APIからjson_decode関数を利用して蔵書データを取得します。

 

XMLをパースする[simplexml_load_file][カーリルAPI]

 

上記の関連ページでは、東京都のXML形式の図書館データから市区町村名を取得しましたが、今回はAPIの提供している蔵書情報を利用して、東京都千代田区の図書館において『嫌われる勇気』という書籍の蔵書を調べてみます。

 

 

スポンサーリンク

 

 

デモ画面

 

library_book.php(デモ画面)

 

 

9行目

図書館API仕様書

 

appkeyには取得したアプリケーションキーを設定して下さい。

systemidに「Tokyo_Chiyoda」を設定しています。関連ページで取得した東京都内の全図書館データを見てもらえれば分かるように、千代田区には複数の図書館が存在します。例えば千代田図書館もその一つですが、この千代田図書館にはsystemidキーの値として「Tokyo_Chiyoda」が割り当てられています。

 

systemidはオンライン(OPAC)上の一つの図書館システムの枠組みであり、必ずしも物理的に一つの図書館だけが割り当てられていません。具体的に「Tokyo_Chiyoda」には「千代田図書館・MIW情報ライブラリ・四番町図書館・日比谷図書館・昌平まちかど図書館・神田まちかど図書館・ちよだパークサイドプラザ図書室」の7館が登録されています。

 

一般的に図書館のウェブページにて書籍を検索した場合、検索結果はその図書館と同じsystemidの蔵書データも表示され、書籍の予約や取り寄せを行うことができます。つまり書籍を検索する場合は、一つの図書館に対して検索されるのではなくこのsystemidに対して検索されています。蔵書データはsystemidによって紐付けられています。

 

ちなみに千代田区にはsystemidとして「Tokyo_Chiyoda」以外にも、官公庁系の図書館システムID「Special_Affrc」「Special_Bousai」「Special_Env」などがあります。

 

sytemidがTokyo_Chiyodaの図書館の一例

 

15行目

$jsonpにはJSONPでの文字列が返ってくるためsubstrによって前後の余分な文字を消去しJSON形式に成形しています。JSON形式にしたらjson_decode()関数によってデコードしています。デコードすると$objectにはstdClassとしてのオブジェクトが返ってきます。

 

stdClassオブジェクトではなく、連想配列として取得したい場合は引数にtrueを指定します。

 

31〜46行目

この図書館APIの蔵書検索はシステム上一回のリクエストですぐにデータは返って来ないので、ポーリングをおこないます。$continueが1である限り2秒ごとにwhile文の中のコードが実行され続けます。

 

 

関連ページ

JSONPをjQueryで利用する[Ajax][カーリルAPI]

 

 

参照ページ


 

PHPマニュアル

json_decode

 

 

LINEで送る
Pocket

Copyright © 2019 思考の葉 All Rights Reserved.  プライバシーポリシー