no title

しつこいようですがJSONネタを書いてみたいと思います。今回は言語をPHPに変えてみました。

関連:JavaでiTunes APIを触ってみたったwwww

一番人気の言語がJavaなので、Javaが需要あるかなぁ~なんて考えていたのですが、そうでもなさそう(´;ω;`)

スポンサードリンク

10:名無しのプログラマー連日続くJava推しのウザさ 2014年03月06日 01:54 ID:mV5t75cZ0

まーーーーたハイレゾ
飽きた速報

41:名無しのプログラマー 2014年03月07日 00:26 ID:xB.M6jLc0

PHPで同じことしたい

(´;ω;`)汗汗汗
とっつきやすそうなPHPでやってみます。

ターゲットは前回と同じくsupercellのアルバム
http://itunes.apple.com/search?term=supercell&country=JP&lang=ja_jp&entity=album

PHPでJSONを扱うにはjson_decodeを使ってあげればよさそう。これでJSON形式の文字列を受け取り、標準クラスにデコードしてくれます。また、オブジェクトで受け取るか、連想配列で受け取るかを選ぶことができます。
json_decode($json, true);
と書けば連想配列で受け取れますし、
json_decode($json);
ならオブジェクト。
正直、どっちを使うべきかはよくわかりません笑。今回はオブジェクトで受け取ってみました。HTTPを読み込んで、json_decodeを書いてみましょう。


<?php
$url = "http://itunes.apple.com/search?term=supercell&country=JP&lang=ja_jp&entity=album";
$json = file_get_contents($url);
$decoded = json_decode($json);

これだけでJSONのデコードが完了してしまいます(゚A゚;)とりあえず、この時点で中身を見てみましょう。


var_dump($decoded);

を実行してみると下記のようにたくさんのデータが表示されるかと思います(※これは長いので1つしか表示していません)


object(stdClass)#1 (2) {
  ["resultCount"]=>
  int(1)
  ["results"]=>
  array(1) {
    [0]=>
    object(stdClass)#2 (20) {
      ["wrapperType"]=>
      string(10) "collection"
      ["collectionType"]=>
      string(5) "Album"
      ["artistId"]=>
      int(631665100)
      ["collectionId"]=>
      int(570090803)
      ["amgArtistId"]=>
      int(2122329)
      ["artistName"]=>
      string(9) "supercell"
      ["collectionName"]=>
      string(24) "Today Is A Beautiful Day"
      ["collectionCensoredName"]=>
      string(24) "Today Is A Beautiful Day"
      ["artistViewUrl"]=>
      string(61) "https://itunes.apple.com/jp/artist/supercell/id631665100?uo=4"
      ["collectionViewUrl"]=>
      string(75) "https://itunes.apple.com/jp/album/today-is-a-beautiful-day/id570090803?uo=4"
      ["artworkUrl60"]=>
      string(126) "http://a4.mzstatic.com/us/r30/Music/v4/55/d7/b1/55d7b14b-3a33-ba15-efc2-ce41d6f44d0f/jacket_SRCL07488B01A_600over.60x60-50.jpg"
      ["artworkUrl100"]=>
      string(128) "http://a5.mzstatic.com/us/r30/Music/v4/55/d7/b1/55d7b14b-3a33-ba15-efc2-ce41d6f44d0f/jacket_SRCL07488B01A_600over.100x100-75.jpg"
      ["collectionPrice"]=>
      float(2000)
      ["collectionExplicitness"]=>
      string(11) "notExplicit"
      ["trackCount"]=>
      int(13)
      ["copyright"]=>
      string(32) "℗ 2011 Sony Music Records Inc."
      ["country"]=>
      string(3) "JPN"
      ["currency"]=>
      string(3) "JPY"
      ["releaseDate"]=>
      string(20) "2011-03-16T07:00:00Z"
      ["primaryGenreName"]=>
      string(5) "Anime"
    }
  }
}

Javaの時と同じく、ちゃんと取得できていることが確認できます。あとは中身を表示してあげればいいだけ。例えば、アルバムのタイトルだったら「collectionName」に入っているので、


echo $decoded->results[0]->collectionName;

これで1番目のアルバム名が所得できます。わーーい(*・ω・*)

makise

で、お次は配列を先頭から要素の最後まで処理するためにforeachを使います。さっきのようにタイトルを全部表示させるなら


foreach($decoded->results as $obj){
	print $obj->collectionCensoredName;
}

これで実行してみると

phptes

流れとしてはこんな感じです。せっかくPHPなので乱雑ですが表示させてみる


foreach($decoded->results as $obj){
	$collectionCensoredName = $obj->collectionCensoredName;
	$artworkUrl100 = $obj->artworkUrl100;
	print "<p>{$collectionCensoredName}</p>";
	print "<img src=\"{$artworkUrl100}\"/>";
}

ブラウザで見るとこんな
phpend

はい、終わりです笑PHPだと短いコードでいけちゃうのが良いですよね。
no title