先日書いた
「JacksonのJSON Data Bindingサンプルを書いてみた with Lombok」
はJSON形式のファイルを定義して、それをベースにデータバインドしました。
ローカルなファイルじゃなくて、実際のWeb API叩いてデータ取得してみたいなーと思って試してみました。しょぼいですが、JSON初心者な自分はこんなレベルです(^^;
データバインドするクラス
レスポンスをみると
{"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行
実行結果
実行すると
おー、ちゃんとデータバインドされた(^^)すごい簡単
とりあえず、あっさりと実際のWeb APIからJSON形式のデータ取得してデータバインドできました。
JSR-353もこういう感じにできるんだろか。。。