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

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

ただいまの
回答率

90.00%

Retrofit2で取得できたデータと取得したいJSONデータが異なります。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,199

s.k

score 266

前提・実現したいこと

Android側からRailsAPIのJSONデータを取得したいです。
HTTP接続、GSONでJSONの変換を実装し、最後に取得したデータが意図していないデータでした。
何が取得されていて、なぜ希望のデータを取得できないかがわからないです。

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

取得したいデータ

[
{"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"}
]

取得したデータ(Logです)

D/debug3: station.around.aroundsatation.model.ListImage@7082e1
D/debug3: station.around.aroundsatation.model.ListImage@2ce7806
D/debug3: station.around.aroundsatation.model.ListImage@51f1ec7
D/debug3: station.around.aroundsatation.model.ListImage@e8aecf4
D/debug3: station.around.aroundsatation.model.ListImage@e116c1d

該当のソースコード

MainActivity.java

package station.around.aroundsatation;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import station.around.aroundsatation.model.Image;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import station.around.aroundsatation.client.ImageClient;
import station.around.aroundsatation.model.ListImage;

import java.util.ArrayList;
import java.util.List;
import android.util.Log;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = (TextView) findViewById(R.id.text_view);

        //Imageインスタンス生成
        Image image = new Image();
        image.en_title = "英語のタイトル";

        textView.setText(image.en_title);
        showMember();
    }

    private void showMember(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://candii.tk/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        ImageClient service = retrofit.create(ImageClient.class);


        Call <List<ListImage>> call2 = service.listImages();
        call2.enqueue(new Callback<List<ListImage>>() {
            @Override
            public void onResponse(Call<List<ListImage>> call, Response<List<ListImage>> response) {
                List<ListImage> listImage = response.body();
                int s = listImage.size();

                TextView textView;
                textView = (TextView)findViewById(R.id.text_view2);

                for(int i = 0; i < s; i++){
                    Log.d("debug3", listImage.get(i).toString());
                    textView.setText(listImage.get(i).toString());
                }

            }

            @Override
            public void onFailure(Call<List<ListImage>> call, Throwable t) {
                Log.d("debug4", t.getMessage());
            }
        });

    }
}

ImageClient.java

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Path;
import station.around.aroundsatation.model.ListImage;
import java.util.List;

public interface ImageClient {
    @GET("/api/v1/images")
    Call <List<ListImage>> listImages();
}

ListImage.java

import java.util.List;

public class ListImage {
    public List<ListImage> image;

    public List<ListImage> getListImages() {
        return image;
    }
}

bundle.gradle

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
    testCompile 'junit:junit:4.12'
    compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'
    compile 'com.google.code.gson:gson:2.7'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

ご経験ある方、ご助言お願いします!

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

おそらく問題なく取得できていると思いますよ。
station.around.aroundsatation.model.ListImage@7082e1のようにログに出力されていますが、これはListImageのアドレスが表示されているからです。
ListImageのtoStringをオーバーライドしてやってListImageのメンバ変数を出力してやるように変更すれば、きちんとログに表示されるようになると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/06/01 21:40

    youtaさん、ありがとうございます!

    キャンセル

0

ゲッターをListImage.javaに追加したところ、
System.out.printlnでJSONデータの表示を確認できました!

 ListImage.java

public class ListImage {
    public String en_title;


    public List<ListImage> image;

    public List<ListImage> getListImages() {
        return image;
    }

    public String getEn_title() {
        return en_title;
    }


}

 MainActivity.java

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
        call2.enqueue(new Callback<List<ListImage>>() {
            @Override
            public void onResponse(Call<List<ListImage>> call, Response<List<ListImage>> response) {
                List<ListImage> listImage = response.body();
                System.out.println(response.body());
                int s = listImage.size();

                TextView textView;
                textView = (TextView)findViewById(R.id.text_view2);

                for(int i = 0; i < s; i++){
                    Log.d("debug3", listImage.get(i).toString());
                    textView.setText(listImage.get(i).toString());
                    System.out.println(listImage.get(i).getEn_title());★
                }

            }
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

 LogCat

06-01 21:36:22.790 22436-22436/station.around.aroundsatation D/debug3: station.around.aroundsatation.model.ListImage@2ce7806
06-01 21:36:22.790 22436-22436/station.around.aroundsatation I/System.out: http://i.imgur.com/9h81ns6.jpg
06-01 21:36:22.790 22436-22436/station.around.aroundsatation D/debug3: station.around.aroundsatation.model.ListImage@51f1ec7
06-01 21:36:22.790 22436-22436/station.around.aroundsatation I/System.out: kamkack;m
06-01 21:36:22.791 22436-22436/station.around.aroundsatation D/debug3: station.around.aroundsatation.model.ListImage@e8aecf4
06-01 21:36:22.791 22436-22436/station.around.aroundsatation I/System.out: lmascml;cal;
06-01 21:36:22.791 22436-22436/station.around.aroundsatation D/debug3: station.around.aroundsatation.model.ListImage@e116c1d
06-01 21:36:22.791 22436-22436/station.around.aroundsatation I/System.out: lm;ac;mdc;lm
06-01 21:36:22.791 22436-22436/station.around.aroundsatation D/debug3: station.around.aroundsatation.model.ListImage@7ca0e92
06-01 21:36:22.791 22436-22436/station.around.aroundsatation I/System.out: l;dcmk;dck;


youta1119さん、ありがとうございます!

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.00%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる