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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

1359閲覧

JSONデータを型が合わず取得できません。

s.k

総合スコア423

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2017/06/01 08:17

編集2017/06/01 09:17

###前提・実現したいこと
RailsAPIでJSONデータを吐き出し、Androidアプリで取得したいです。
吐き出したJSONデータの型とAndroid側の取得するための型が一致せずエラーになりました。

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

06-01 16:54:40.426 19350-19350/station.around.aroundsatation D/debug4: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $

###該当のソースコード

APIが吐き出すJSONデータ

JSON

1[{"id":1,"en_title":"http://i.imgur.com/9h81ns6.jpg","ja_title":"新宿駅 東口","en_content":"FirstKitchen Mac Wi-fi","ja_content":"ファーストキッチン マクドナルド ワイファイ","url":{"url":null},"created_at":"2017-05-28T06:43:53.150Z","updated_at":"2017-05-30T04:54:06.455Z"},{"id":2,"en_title":"kamkack;m","ja_title":"mlcdm;kacm;k","en_content":"mcsamk;casm;","ja_content":";dc,lacsl;,","url":{"url":null},"created_at":"2017-05-30T05:31:13.344Z","updated_at":"2017-05-30T05:31:13.344Z"},{"id":3,"en_title":"lmascml;cal;","ja_title":"mcmaclm","en_content":"lm;dcmkdckm","ja_content":"lcdm;cdlm;","url":{"url":null},"created_at":"2017-05-30T05:31:25.030Z","updated_at":"2017-05-30T05:31:25.030Z"},{"id":4,"en_title":"lm;ac;mdc;lm","ja_title":"l;c;lmclm;","en_content":"lddkm","ja_content":"llm;dc;lm","url":{"url":null},"created_at":"2017-05-30T05:31:35.457Z","updated_at":"2017-05-30T05:31:35.457Z"},{"id":5,"en_title":"l;dcmk;dck;","ja_title":"l;msckck;","en_content":"dckmadkm","ja_content":"klmckldc","url":{"url":null},"created_at":"2017-05-30T05:31:46.043Z","updated_at":"2017-05-30T05:31:46.043Z"}]

ImageClient.java

Java

1import retrofit2.Call; 2import retrofit2.http.GET; 3import retrofit2.http.Path; 4import station.around.aroundsatation.model.ListImage; 5 6public interface ImageClient { 7 @GET("/api/v1/images") 8 Call<ListImage> listImages(); 9}

ListImage.java

Java

1import java.util.List; 2 3public class ListImage { 4 public List<Image> image; 5 6 public List<Image> getListImages() { 7 return image; 8 } 9}

MainActivity

Java

1 private void showMember(){ 2 Retrofit retrofit = new Retrofit.Builder() 3 .baseUrl("http://candii.tk/") 4 .addConverterFactory(GsonConverterFactory.create()) 5 .build(); 6 ImageClient service = retrofit.create(ImageClient.class); 7 8 9 Call<ListImage> call2 = service.listImages(); 10 call2.enqueue(new Callback<ListImage>() { 11 @Override 12 public void onResponse(Call<ListImage> call, Response<ListImage> response) { 13 List<Image> listImage = response.body().getListImages(); 14 int s = listImage.size(); 15 for(int i = 0; i < s; i++){ 16 Log.d("debug3", listImage.get(i).getEn_title()); 17 } 18 19 } 20 21 @Override 22 public void onFailure(Call<ListImage> call, Throwable t) { 23 Log.d("debug4", t.getMessage()); 24 } 25 }); 26 }

どのようにJSONデータ型に対応するか検討がつかず質問させていただきます。
ご経験ある方、ご指南お願いします!

追加

エラー内容

Error:(42, 51) エラー: 不適合な型: Call<List<ListImage>>をCall<ListImage>に変換できません: Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details.

エラー箇所

MainActivity.java

public class MainActivity extends AppCompatActivity { 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 private void showMember(){ Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://candii.tk/") .addConverterFactory(GsonConverterFactory.create()) .build(); ImageClient service = retrofit.create(ImageClient.class); Call <ListImage> call2 = service.listImages(); ★ここです。★ call2.enqueue(new Callback<ListImage>() { @Override public void onResponse(Call<ListImage> call, Response<ListImage> response) { List<Image> listImage = response.body().getListImages(); int s = listImage.size(); for(int i = 0; i < s; i++){ Log.d("debug3", listImage.get(i).getEn_title()); } } 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

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

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

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

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

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

guest

回答1

0

ベストアンサー

使ったことないので推測です。

Java

1Call<ListImage> listImages();

ではなく、下記ではないでしょうか。

Java

1Call<List<ListImage>> listImages();

投稿2017/06/01 08:35

yona

総合スコア18155

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

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

s.k

2017/06/01 08:41

ありがとうございます! 試したところ、 Error:(42, 51) エラー: 不適合な型: Call<List<ListImage>>をCall<ListImage>に変換できません: と言われました!
yona

2017/06/01 08:50 編集

エラーがでたら自分で調べてからコメントしてください。 また、あなたのコメントではどこで起きたエラーなのかわかりません。具体的に説明されない限り私にはわかりません。
s.k

2017/06/01 09:18

失礼しました。 エラー箇所を載せました。 エラー内容に関しては調べてます。 少々お待ちください。
yona

2017/06/01 09:22

回答で変更した内容はクラスを使用する全箇所に影響がでます。 併せて修正して試してください。
s.k

2017/06/01 09:49

わかりました!
s.k

2017/06/01 10:44

型変換を調整できました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問