Javaでロケタッチの住所正規化APIを扱う

JavaでAPIっつったらJerseyですよ。

ということで先ほどリリースされたロケタッチの住所正規化APIをJerseyで遊んでみました。

Jersey ClientとJAXBでJSONを読む

Jerseyはリクエストの結果やPOSTデータがXMLやJSONの場合、JAXBの仕組みを使って良きようにPOJOにバインドしてくれます。住所正規化APIのJSONは素直なフォーマットで提供されているので、以下のような簡単なPOJOでOKです。

@XmlRootElement(name = "address_normalize")
public class AddressNormalize {
	public static class Result {
		public static class Normalize {
			@XmlElement
			private String region;

			@XmlElement
			private String number;

			@XmlElement
			private String build;
		}

		@XmlElement
		private String zip;

		@XmlElement(name = "region_id")
		private String regionId;

		@XmlElement
		private String address;

		@XmlElement
		private Normalize normalize;
	}

	@XmlElement
	private Integer code;

	@XmlElement(name = "is_error")
	private Boolean error;

	@XmlElement
	private String query;

	@XmlElement
	private Result result;
}

getter/setterは省略してあります。privateではなくpublicにして直接フィールドを操作するでもいいと思います、お好みでどうぞ。

実際のコードはこんな感じです。

Client client = Client.create();
WebResource webResource = client.resource("https://api.loctouch.com/v1/geo/address_normalize");

AddressNormalize result = webResource.queryParam("address", "東京都新宿区新宿5丁目17番17号 渡菱ビル3階").get(AddressNormalize.class);
assertThat(result.getResult().getAddress(), is("東京都新宿区新宿5-17-17 渡菱ビル3階"));

簡単ですねー。GitHubにコードをpushしておいたので遊んでみてください。

https://github.com/nagaseyasuhito/sandbox-loctouch

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>