読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

JacksonのJSON Data Bindingで実際のWeb APIからデータ取得してみた

Jackson JSON Lombok

先日書いた
JacksonのJSON Data Bindingサンプルを書いてみた with Lombok
はJSON形式のファイルを定義して、それをベースにデータバインドしました。

ローカルなファイルじゃなくて、実際のWeb API叩いてデータ取得してみたいなーと思って試してみました。しょぼいですが、JSON初心者な自分はこんなレベルです(^^;

HeartRails Express JSON APIで試す

HeartRails Express
http://express.heartrails.com/api.html

路線や駅名、エリアや都道府県情報などの地理情報が取得できるサービス。

とりあえず一番最初にある「エリア情報取得API」を試しました。

こんな感じのです。
http://express.heartrails.com/api/json?method=getAreas

データバインドするクラス

レスポンスをみると

{"response":{"area":["北海道","東北","関東","中部","近畿","中国","四国","九州"]}}

となっていて、responseの中に入れ子でエリアの配列が続いてます。

とりあえず直観のままに以下Responseクラスを定義。

package jp.co.hoge.jacksonsample;

import lombok.Data;

@Data
public class Response {
    private Area response;
    
    @Data
    public class Area{
        private String[] area;
    }
}

Lombokの@Data使ってSetter/Getterを付けてます。

呼出し

Mainクラスは

package jp.co.hoge.jacksonsample;

import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.net.URL;

public class App 
{
    public static void main( String[] args ) throws IOException
    {
        ObjectMapper mapper = new ObjectMapper();
        Response response = mapper.readValue(
            new URL("http://express.heartrails.com/api/json?method=getAreas"),
            Response.class);
    }
}

これだけ(^^;実体2行

実行結果

実行すると

f:id:kikutaro777:20130717193114j:plain

おー、ちゃんとデータバインドされた(^^)すごい簡単

とりあえず、あっさりと実際のWeb APIからJSON形式のデータ取得してデータバインドできました。

JSR-353もこういう感じにできるんだろか。。。

にほんブログ村 IT技術ブログへ
にほんブログ村
にほんブログ村 IT技術ブログ Javaへ
にほんブログ村