log

日記です

楽天ブックス検索APIの結果をパースする

ライブラリ入手先

コピーして動かすが良いさ…

取得すべきJSONデータはめんどい(サンプルなので)リテラルで持ってます。
JSON文字列を取り込んで、JSONObjectというオブジェクトを生成するみたいです。
JSONObjectに対して、get(String|Int|Boolean|Double)とかを呼んで値を取得します。
ネスとしたオブジェクトは、メソッドチェーン(使えるみたいなんでそれで)で目的のオブジェクトのとこまでトラバースして使います。
配列はgetJSONArrayで取得します。

	/**
	 * あうあうあー
	 * @param args
	 * @throws JSONException
	 */
	public static void main(String[] args) throws JSONException {

		String json = "{\"Body\":{\"BooksBookSearch\":{\"Items\":{\"Item\":[{\"contentsKana\":\"\",\"limitedFlag\":0,\"authorKana\":\"スティ-ブンス,ペルディタ/プ-リ-,ロブ\",\"booksGenreID\":\"001005017\",\"author\":\"ペルディタ・スティ-ブンス/ロブ・プ-リ-\",\"subTitle\":\"UMLを使って\",\"seriesNameKana\":\"オブジェクト テクノロジ- シリ-ズ\",\"title\":\"オブジェクト指向とコンポ-ネントによるソフトウェア工学\",\"subTitleKana\":\"ユ-エムエル オ ツカッテ\",\"publisherName\":\"ピアソン桐原\",\"itemCaption\":\"本書は、「良いシステムとは何か」という根源的な疑問から入ります。単なる解説にとどまらず、非常に多くの問いと演習問題が与えられ、調査力と深い考察を要求されており、本当の基礎力が身につきます。第3部は具体的なモデルにまで立ち入り、第4部では、この手の教科書ではめったに触れられることのない実践の阻害要因や品質保証にまで言及しています。\",listPrice:\"3150\",\"isbn\":\"9784894712638\",\"largeImageUrl\":\"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8947/89471263.jpg?_ex=200x200\",\"mediumImageUrl\":\"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8947/89471263.jpg?_ex=120x120\",\"titleKana\":\"オブジェクト シコウ ト コンポ-ネント ニ ヨル ソフトウェア コウガク\",\"availability\":\"1\",\"postageFlag\":2,\"salesDate\":\"2000-09-05\",\"contents\":\"\",\"smallImageUrl\":\"http://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/8947/89471263.jpg?_ex=64x64\",\"discountPrice\":0,\"itemPrice\":3150,\"size\":\"単行本\",\"affiliateUrl\":\"\",\"seriesName\":\"Object technology series\",\"reviewCount\":0,\"reviewAverage\":0,\"discountRate\":0,\"chirayomiUrl\":\"\",\"itemUrl\":\"http://books.rakuten.co.jp/rb/1185517/\"}]},\"pageCount\":1,\"hits\":1,\"last\":1,\"count\":1,\"page\":1,\"carrier\":0,\"first\":1}},\"Header\":{\"Status\":\"Success\",\"Args\":{\"Arg\":{\"apiVersion\":{\"content\":true,\"value\":\"30\"},\"operation\":{\"content\":true,\"value\":\"BooksBookSearch\"},\"developerId\":{\"content\":true,\"value\":\"20a3845f5fc56032a7a075ac367fa414\"},\"isbn\":{\"content\":true,\"value\":\"4894712636\"},\"User-Agent\":{\"content\":true,\"value\":\"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30 ChromePlus/1.6.3.1\"},\"version\":{\"content\":true,\"value\":\"2011-07-07\"}}},\"StatusMsg\":\"\"}}";

		JSONObject jsonObject = new JSONObject(json);

		JSONObject book = jsonObject
				.getJSONObject("Body")
				.getJSONObject("BooksBookSearch")
				.getJSONObject("Items")
				.getJSONArray("Item")
				.getJSONObject(0);

		String title = book.getString("title");
		String author = book.getString("author");
		String publisherName = book.getString("publisherName");
		int listPrice = book.getInt("listPrice");
		String salesDate = book.getString("salesDate");
		String largeImageUrl = book.getString("largeImageUrl");
		String itemCaption = book.getString("itemCaption");

		System.out.println(title);
		System.out.println(author);
		System.out.println(publisherName);
		System.out.println(listPrice);
		System.out.println(salesDate);
		System.out.println(largeImageUrl);
		System.out.println(itemCaption);

	}

知らないとびっくりしそうなこと

  • ""で囲まれていないデータはJSONObject#getInt("hoge");でとる
    • JSONObject#getString("hoge");では取れない
  • 見た感じjarファイルとかは配布されてないっぽいので、org.jsonってパッケージを作り、ソースコードを突っ込んで使用する