質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

5795閲覧

外部APIからRestTemplateを使用したJSONの取得

mnsc10

総合スコア34

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/09/02 00:57

編集2018/09/02 07:45

前提・実現したいこと

外部APIからSpringを使用しJSON形式のデータを取得するシステムを作っています。
RestTemplateを使用し情報を取得する処理を実装中に以下のエラーメッセージが発生しました。
データの取得を行うにはどのようにすれば良いのでしょうか。

発生している問題・エラーメッセージ

Exception in thread "main" org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class apinotest.getcity.Result] and content type [application/json;charset=utf-8] at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:119) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:725) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680) at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:332) at apinotest.getcity.GetCity.main(GetCity.java:11)

該当のソースコード

GetCity

1package apinotest.getcity; 2 3import org.springframework.web.client.RestTemplate; 4 5public class GetCity { 6 public static void main(String[] args) { 7 RestTemplate restTemplate = new RestTemplate(); 8 Result result = restTemplate.getForObject("http://www.land.mlit.go.jp/webland/api/CitySearch?area=13",Result.class); 9 } 10}

Result

1package apinotest.getcity; 2 3import java.util.List; 4 5public class Result { 6 private String status; 7 private List<City> data; 8 9 public String getStatus() { 10 return status; 11 } 12 13 public void setStatus(String status) { 14 this.status = status; 15 } 16 17 public List<City> getData() { 18 return data; 19 } 20 21 public void setData(List<City> data) { 22 this.data = data; 23 } 24} 25

City

1package apinotest.getcity; 2 3public class City { 4 private String id; 5 private String name; 6 7 public String getId() { 8 return id; 9 } 10 11 public void setId(String id) { 12 this.id = id; 13 } 14 15 public String getName() { 16 return name; 17 } 18 19 public void setName(String name) { 20 this.name = name; 21 } 22}

補足情報(FW/ツールのバージョンなど)

取得するAPI
http://www.land.mlit.go.jp/webland/api.html#todofukenlist

jara:1.8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

http://www.land.mlit.go.jp/webland/api/CitySearch?area=13 の実行結果を見ると

json

1{"status":"OK","data":[{"id":"13101","name":"千代田区"},{"id":"13102","name":"中央区"}, ..... {"id":"13421","name":"小笠原村"}]}

から、構造を解析すると

status data (配列) - id - name

になっていますから、

Resultクラスは、status と 複数のdata をもたせると良いでしょう。以下は実装例です。

java

1import java.util.List; 2 3import org.springframework.stereotype.Service; 4import org.springframework.web.client.RestTemplate; 5 6import lombok.Getter; 7import lombok.Setter; 8 9@Service 10public class CitySearchService { 11 12 public Result search(String area) { 13 RestTemplate restTemplate = new RestTemplate(); 14 Result result = restTemplate.getForObject("http://www.land.mlit.go.jp/webland/api/CitySearch?area=" + area, Result.class); 15 16 return result; 17 } 18 19 @Getter @Setter 20 public static class Result { 21 private String status; 22 private List<Area> data; 23 24 @Getter @Setter 25 public static class Area { 26 private String id; 27 private String name; 28 } 29 } 30}

投稿2018/09/02 10:36

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問