Android - анализ JSON без имени массива с использованием Retrofit - PullRequest
0 голосов
/ 20 июня 2019

У меня есть json respose без имени массива.

Ниже приведен код, который я сделал до сих пор.

JSON Response

[
    {
        "id": 1,
        "user_id": 101,
            "name": "abc",
        "number": 1234567890
    },
    {
        "id": 2,
            "user_id": 102,
         "name": "xyzzy",
         "number": 8888888888
    },
    {
        "id": 3,
        "user_id": 103,
        "name":"sdfdsdv",
        "number": 2222222222
    }
]

Класс интерфейса

public interface ApiInterface {

@GET("user/details”)
Call<List<User_List>> getUser(
        @Query(“id”)String id
);
}

Класс User_List

public class User_List {

    @SerializedName("id")
    @Expose
    int id;
    @SerializedName("user_id")
    @Expose
    int user_id;
    @SerializedName("name")
    @Expose
    String name;
    @SerializedName("number")
    @Expose
    Int number;

    public int getId() {
        return id;
    }

    public int getUser_id() {
        return user_id;
    }

    public int getNumber() {
        return number;
    }

    public String getName() {
        return name;
    }
}

MainActivity Class

Public void fetch() {

        ApiInterface apiInterface = ApiClient.getRetrofit().create(ApiInterface.class);
        Call<List<User_List>> user = apiInterface.getUser(id);

        user(new Callback<List<user_List>>() {
            @Override
            public void onResponse(Call<List<user_List>> call, retrofit2.Response<List<user_List>> response) {
                try{


                    if (response.isSuccessful()) {

                        for (int i = 0; i < user_list(); i++) {
                            int id = user_list.get(i).getId();
               String name = user_list.get(i).getName();
                        }
                    }else {

                    }

                }catch (Exception e){
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<ArrayList<ProductEnquiry_Contributor>> call, Throwable t) {

            }
        });
}

Я пытался разобрать его, но не смог найти успех. Может кто-нибудь посоветовать мне, как анализировать этот тип ответа с помощью Retrofit?

Это дает мне ошибку в ответ Ошибка: ожидается BEGIN_ARRAY, но был BEGIN_OBJECT в строке 1, путь 2, столбец $

1 Ответ

0 голосов
/ 20 июня 2019

вы можете сделать это так

 @POST("endpoint)
    Call<List<yourPOJO> methodname(@Body BodyPOJO bodyPojo);

или

@POST("endpoint)
        Call<Response<List<yourPOJO>> methodname(@Body BodyPOJO bodyPojo);
...