以前、PHPで応答をJSON形式で返す方法をご紹介しました。今回は、JSON(ジェイソン、JavaScript Object Notation)を受信した時にPHPでオブジェクト毎にパース(解析)して、連想配列に格納する方法をご紹介します。
次のようなJSON形式のデータを受信したとします。今回はこの内容をresponse.jsonというファイルを作って、ファイルの内容を以下のようにしておきます。
response.json
次にPHPですが、先ほどのresponse.jsonと同じフォルダにPHPファイルを作ってください。
$json = file_get_contents ( "response.json" ); |
$json = mb_convert_encoding( $json , 'UTF8' , 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN' ); |
$obj = json_decode( $json , true); |
echo $obj [ 'work' ][ 'program' ]; |
上記の例は連想配列でパースしたものですが、オブジェクト形式のまま返す方法もあります。先程と違うのはjson_decode関数にtrueを付けないところと、オブジェクトへのアクセスが波括弧となるところです。
$json = file_get_contents ( "response.json" ); |
$json = mb_convert_encoding( $json , 'UTF8' , 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN' ); |
$obj = json_decode( $json ); |
echo $obj ->{ 'work' }->{ 'program' }; |
Amazon SNSからの応答をHTTPで受け取る場合は指定したエンドポイントにPOSTで投げてくるので、この方法を用いてやれば通知内容を解析することができます。
本日は以上です。
Pingback: PHPで外部JSONファイル読み込んでパースする | egoblock