Как я могу получить отдельные объекты из JsonArray, используя Retrofit? - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать Retrofit для получения массива из моего API. Затем мне нужно извлечь определенные объекты из массива для использования в разных частях моего приложения. Используя приведенный ниже код, я могу получить успешный ответ, но когда я пытаюсь зарегистрировать ответ, я получаю это ...

myapp.com.myapp.LocationsModel@9a0d130

Мне нужно, чтобы был возвращен фактический массив, чтобы я мог получать объекты (строки) из массива. Я пробовал несколько разных реализаций от Google и Stack Overflow, и я не могу заставить это работать на всю жизнь. Возможно я пропускаю что-то простое. Я впервые использую Retrofit вместо Volley. Спасибо за любую помощь. Вот моя модель от LocationsModel. Я также вставил ответ API, который я пытаюсь получить и проанализировать.

Модель

@GET("locations")
    Call<List<LocationsModel>> getLocations(@Header("authorization") String token);

Клиент

public void getContests() {
       // SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
        String token = LoginActivity.authToken;
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Interface.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        Interface api = retrofit.create(Interface.class);
            Log.v("sendtoken", token);

        Call<List<LocationsModel>> call = api.getLocations(token);



        call.enqueue(new Callback<List<LocationsModel>>() {
            @Override
            public void onResponse(Call<List<LocationsModel>> call, Response<List<LocationsModel>> response) {
                int statusCode = response.code();
                Log.d("Response Code", "Response Code: " + statusCode);
                Log.d("LocArray", "arr: " + Arrays.toString(response.body().toArray()));

            }

            @Override
            public void onFailure(Call<List<LocationsModel>> call, Throwable t) {
                Log.e("response-failure", call.toString());
                t.printStackTrace();
            }
        });
    }

Ответ API Json Array

[
    {
        "how_it_works": [
            "Test program"
        ],
        "id": 242,
        "business_id": 162,
        "title": "Take 10% off",
        "desc_short": "10% off",
        "logo_url": "http://www.logourl.com",
        "hashtag": "#Octo",
        "confirm_message_title": "Confirm Message",
        "rules": "
The rules

",
        "confirm_message": "Confirmation",
        "start_date": "2018-04-01T05:00:00.000Z",
        "end_date": "2018-06-01T04:59:59.000Z",
        "active": true,
        "entry_count": 0,
        "created_at": "2018-04-16T19:15:03.000Z",
        "updated_at": "2018-04-16T19:15:57.000Z",
        "deleted_at": null,
        "locations": [
            {
                "id": 232,
                "business_id": 162,
                "name": "Trent Home",
                "address": "123 Second Place",
                "city": "Rochester",
                "state": "OK",
                "zipcode": "35854",
                "latitude": 33.0785,
                "longitude": -87.5819,
                "radius": 280.14,
                "created_at": "2018-04-16T19:15:40.000Z",
                "updated_at": "2018-04-16T19:15:40.000Z",
                "deleted_at": null,
                "contest_locations": {
                    "created_at": "2018-04-16T19:15:48.000Z",
                    "updated_at": "2018-04-16T19:15:48.000Z",
                    "contest_id": 242,
                    "location_id": 232
                },
                "stickers": [
                    "http://www.stickerurl.com"
                ]
            }
        ],
        "entries": []
    },
    {
        "how_it_works": [
            "Take a photo, get a reward"
        ],
        "id": 292,
        "business_id": 162,
        "title": "Take 15% off",
        "desc_short": "15% off $10",
        "logo_url": "https://www.logourl.com",
        "hashtag": "#testAndroid",
        "confirm_message_title": "15% off now",
        "rules": "
rules here

",
        "confirm_message": "Complete good job",
        "start_date": "2018-04-09T05:00:00.000Z",
        "end_date": "2018-05-29T04:59:59.000Z",
        "active": true,
        "entry_count": 0,
        "created_at": "2018-04-23T16:44:42.000Z",
        "updated_at": "2018-04-23T16:44:56.000Z",
        "deleted_at": null,
        "locations": [
            {
                "id": 232,
                "business_id": 162,
                "name": "Trent Home",
                "address": "123 Main St",
                "city": "Tuls",
                "state": "Ny",
                "zipcode": "35235",
                "latitude": 33.0785,
                "longitude": -87.5819,
                "radius": 280.14,
                "created_at": "2018-04-16T19:15:40.000Z",
                "updated_at": "2018-04-16T19:15:40.000Z",
                "deleted_at": null,
                "contest_locations": {
                    "created_at": "2018-04-23T16:44:49.000Z",
                    "updated_at": "2018-04-23T16:44:49.000Z",
                    "contest_id": 292,
                    "location_id": 232
                },
                "stickers": []
            }
        ],
        "entries": []
    }
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...