昨日の深夜の記事である、JavaでTwitterのJSON取得するにはどうしたらいいの?の続きとをやってみたいと思います。
昨日のTwitterでは面白みが無かったかなぁなんて思ったので、他のJSONを試してみます。何にしたらいいかわからないので、みんな大好きiTunesのJSONを試してみることに
まずは「iTuens JSON」でググってみる。するとAppleのSearch APIってのが見つかると思うのでそこを参考に
これを読むと必要なパラメーターがたくさん書いてあります。これは必要に応じて各自で追加してください。今回は管理人が大好きなsupercellのアルバムでも取得してみようと思います。
ということで、与えるパラメーターは
https://itunes.apple.com/search?
term=supercell
&country=JP
&lang=ja_jp
&entity=album
が最低限必要そう。くっつけると
http://itunes.apple.com/search?term=supercell&country=JP&lang=ja_jp&entity=album
開いて整理すると中身はこんな(多いので1つだけ表示しています)
{
"resultCount": 1,
"results": [
{
"amgArtistId": 482126,
"artistId": 631665100,
"artistName": "supercell",
"artistViewUrl": "https://itunes.apple.com/jp/artist/supercell/id631665100?uo=4",
"artworkUrl100": "http://a5.mzstatic.com/us/r30/Music/v4/55/d7/b1/55d7b14b-3a33-ba15-efc2-ce41d6f44d0f/jacket_SRCL07488B01A_600over.100x100-75.jpg",
"artworkUrl60": "http://a4.mzstatic.com/us/r30/Music/v4/55/d7/b1/55d7b14b-3a33-ba15-efc2-ce41d6f44d0f/jacket_SRCL07488B01A_600over.60x60-50.jpg",
"collectionCensoredName": "Today Is A Beautiful Day",
"collectionExplicitness": "notExplicit",
"collectionId": 570090803,
"collectionName": "Today Is A Beautiful Day",
"collectionPrice": 2000.0,
"collectionType": "Album",
"collectionViewUrl": "https://itunes.apple.com/jp/album/today-is-a-beautiful-day/id570090803?uo=4",
"copyright": "℗ 2011 Sony Music Records Inc.",
"country": "JPN",
"currency": "JPY",
"primaryGenreName": "Anime",
"releaseDate": "2011-03-16T07:00:00Z",
"trackCount": 13,
"wrapperType": "collection"
}
]
}
ここからは昨日のコードを使いまわします!まだ見ていない方は一読お願いします(>_<)とりあえず昨日作ったTwitterJsonクラスを変えちゃえばよさ気。変えるというかこれはモウ消しちゃって新しく作り直します。ItunesJsonクラスを作ってみる。上で整理したJSONを見ると2階層に分かれていることがわかります。ItunesJsonクラスは上の階層を書いて上げる。こんな感じ
import java.util.List;
public class ItunesJson {
int resultCount;
List<Results> results;
}
次は下の階層のクラスを用意してあげます。ちなみにGsonはゲッターセッター不要です。必要あらば付け足しても構いませんが、今回は如何にラクにコードを書くかって感じで進めてみます。Resultsクラスを作りました。ぜーーんぶ書いてあげます。これは全部書かないとエラーになるわけではありません。必要な要素だけでもいいのですが、あるものは書いておいたほうが後々ラクだったりします。
public class Results {
int amgArtistId;
int artistId;
String artistName;
String artistViewUrl;
String artworkUrl100;
String artworkUrl60;
String collectionCensoredName;
String collectionExplicitness;
String collectionId;
String collectionName;
int collectionPrice;
String collectionType;
String collectionViewUrl;
String copyright;
String country;
String currency;
String primaryGenreName;
String releaseDate;
int trackCount;
String wrapperType;
}
後はメインをちょっと書き換えてあげれば完成。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import com.google.gson.Gson;
public class Itsokuhou{
public static void main(String args[]){
HttpURLConnection con = null;
StringBuilder builder = new StringBuilder();
try {
URL url = new URL("http://itunes.apple.com/search?term=supercell&country=JP&lang=ja_jp&entity=album");
con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setInstanceFollowRedirects(false);
//接続(´・ω・`)
con.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
//とりあえず表示してみる
System.out.println(builder.toString());
Gson gson = new Gson();
//この下ちょっと手直し
ItunesJson itj = gson.fromJson(builder.toString(),ItunesJson.class);
System.out.println("名前とうらるを表示");
System.out.println(itj.resultCount);
for(int n =0;n < itj.results.size();n++){
System.out.println(itj.results.get(n).collectionName);//アルバム名
}
}
}
うーーーん。これじゃ昨日と対して変わらない。もうちょっと視覚的に楽しめるようにHTMLコードでも書き出してみます。artworkUrl100といのうが100×100の画像なのでそれとタイトルとリンクでも付けてみましょう。もうやっていることは上と同じなので急ぎ足で
for(int n =0;n < itj.results.size();n++){
String ijcode = "<p>" + itj.results.get(n).collectionName + "</p>"
+ "<img src=\"" + itj.results.get(n).artworkUrl100 + "\"/>";
System.out.println(ijcode);
}
これでコンソールに表示されたHTMLコードをブログなどに埋め込むと下記のようになります☆彡
Supercell - EP
JSONはこれを応用させると色々なことができます。例えば当ブログの
Macで捗るオススメのアプリひたすら書いてくわ
はスクショもアプリのバナーも全てJSONからデータを取得して埋め込んでいます。
今回はパラメータを固定にしていますが、入力フォームから受け取ったデータをパラメータに取り込めばプチ検索システムの完成です。たくさんのサービスがAPIを公開しているので面白そうなのを探してみてください☆彡