java - 如何在数组响应android retrofit2中获取特定的响应数据

标签 java php android api retrofit2

这是我从数据库中得到的回复

{
  "error": false,
  "images": [
    {
      "id": "9",
      "url": "http://192.168.1.27/BimbinganPA/include//uploads/9.png"
    }
  ]
}

我的响应类 UserDataResponse.java(编辑完整数据响应)

@SerializedName("error")
@Expose
private String iserror;
@SerializedName("error_msg")
@Expose
private String error_msg;
@SerializedName("nama")
@Expose
private String nama;
@SerializedName("nomor_induk")
@Expose
private String nomor_induk;
@SerializedName("prodi")
@Expose
private String prodi;
@SerializedName("dosen_pa")
@Expose
private String dosen_pa;
@SerializedName("email")
@Expose
private String email;
@SerializedName("email2")
@Expose
private String email2;
@SerializedName("mobile_phone")
@Expose
private String mobile_phone;
@SerializedName("mobile_phone2")
@Expose
private String mobile_phone2;
@SerializedName("alamat_mlg")
@Expose
private String alamat_mlg;
@SerializedName("alamat_asal")
@Expose
private String alamat_asal;
@SerializedName("sma_asal")
@Expose
private String sma_asal;
@SerializedName("hobby")
@Expose
private String hobby;
@SerializedName("ekskul")
@Expose
private String ekskul;
@SerializedName("nama_ortu")
@Expose
private String nama_ortu;
@SerializedName("alamat_ortu")
@Expose
private String alamat_ortu;
@SerializedName("email_ortu")
@Expose
private String email_ortu;
@SerializedName("mobilephone_ortu")
@Expose
private String mobilephone_ortu;
@SerializedName("id_fb")
@Expose
private String id_fb;
@SerializedName("id_ig")
@Expose
private String id_ig;
@SerializedName("id_line")
@Expose
private String id_line;
@SerializedName("numb_wa")
@Expose
private String numb_wa;
@SerializedName("images")
@Expose
private List<Image> images = null;

public String getIserror() {
    return iserror;
}
public void setIserror(String iserror) {
    this.iserror = iserror;
}
public String getMsg() {
    return error_msg;
}
public void setMsg(String error_msg) {
    this.error_msg = error_msg;
}
public String getNama() {
    return nama;
}
public void setNama(String nama) {
    this.nama = nama;
}
public String getNomor_induk() {
    return nomor_induk;
}
public void setNomor_induk(String nomor_induk) {
    this.nomor_induk = nomor_induk;
}
public String getProdi() {
    return prodi;
}
public void setProdi(String prodi) {
    this.prodi = prodi;
}
public String getDosen_pa() {
    return dosen_pa;
}
public void setDosen_pa(String dosen_pa) {
    this.dosen_pa = dosen_pa;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}
public String getEmail2() {
    return email2;
}
public void setEmail2(String email2) {
    this.email2 = email2;
}
public String getMobile_phone() {
    return mobile_phone;
}
public void setMobile_phone(String mobile_phone) {
    this.email = mobile_phone;
}
public String getMobile_phone2() {
    return mobile_phone2;
}
public void setMobile_phone2(String mobile_phone2) {
    this.email = mobile_phone2;
}
public String getAlamat_mlg() {
    return alamat_mlg;
}
public void setAlamat_mlg(String alamat_mlg) {
    this.alamat_mlg = alamat_mlg;
}

public String getAlamat_asal() {
    return alamat_asal;
}
public void setAlamat_asal(String alamat_asal) {
    this.alamat_asal = alamat_asal;
}
public String getSma_asal() {
    return sma_asal;
}
public void setSma_asal(String sma_asal) {
    this.sma_asal = sma_asal;
}
public String getHobby() {
    return hobby;
}
public void setHobby(String hobby) {
    this.hobby = hobby;
}
public String getEkskul() {
    return ekskul;
}
public void setEkskul(String ekskul) {
    this.ekskul = ekskul;
}
public String getNama_ortu() {
    return nama_ortu;
}
public void setNama_ortu(String nama_ortu) {
    this.nama_ortu = nama_ortu;
}
public String getAlamat_ortu() {
    return alamat_ortu;
}
public void setAlamat_ortu(String alamat_ortu) {
    this.alamat_ortu = alamat_ortu;
}
public String getEmail_ortu() {
    return email_ortu;
}
public void setEmail_ortu(String email_ortu) {
    this.email_ortu = email_ortu;
}
public String getMobilephone_ortu() {
    return mobilephone_ortu;
}
public void setMobilephone_ortu(String mobilephone_ortu) {
    this.mobilephone_ortu = mobilephone_ortu;
}
public String getId_fb() {
    return id_fb;
}
public void setId_fb(String id_fb) {
    this.id_fb = id_fb;
}
public String getId_ig() {
    return id_ig;
}
public void setId_ig(String id_ig) {
    this.id_ig = id_ig;
}
public String getId_line() {
    return id_line;
}
public void setId_line(String id_line) {
    this.id_line = id_line;
}
public String getNumb_wa() {
    return numb_wa;
}
public void setNumb_wa(String numb_wa) {
    this.numb_wa = numb_wa;
}

public List<Image> getImages() {
    return images;
}

这是我的 Image.class

@SerializedName("id")
@Expose
private String no_user_id;
@SerializedName("url")
@Expose
private String image_url;

public String getNo_user_id() {
    return no_user_id;
}
public String getImage_url() {
    return image_url;
}

我是这样调用它的

 public void F0_getPhoto(){
    Call<List<UserDataResponse>> getPhoto = mApiService.getImage(
            String.valueOf(mPrefs.getUserID()));
    getPhoto.enqueue(new Callback<List<UserDataResponse>>() {
        @Override
        public void onResponse(Call<List<UserDataResponse>> call, Response<List<UserDataResponse>>response) {
        //    String iserror = response.body().getIserror();

                // Jika login berhasil maka data nama yang ada di response API
                // akan diparsing ke activity selanjutnya.
            List<UserDataResponse> userDatalist = response.body();
            //Creating an String array for the ListView
            String[] iserror = new String[userDatalist.size()];

            //looping through all the heroes and inserting the names inside the string array
            for (int i = 0; i < userDatalist.size(); i++) {
                iserror[i] = userDatalist.get(i).getIserror();
                if (iserror.equals("false")) {
                    String[] url = new String[userDatalist.size()];
                    url[i] = userDatalist.get(i).getImages().getimage_Url();
                    showPhoto(url);
                }
            }

        @Override
        public void onFailure(Call<List<UserDataResponse>> call, Throwable t){
            Log.e("debug", "onFailure: ERROR > " + t.toString());
        }
    });
}

我的问题是如何从数组中调用响应“url” 我尝试在方法 getImage() 之后调用方法 getimage_Url() 但我无法调用它 url[i] = userDatalist.get(i).getImages().getimage_Url();

最佳答案

根据你上面的json,返回的是Object而不是Array。因此,修改您的 F0_getPhoto 来处理这个问题。

public void F0_getPhoto(){
    Call<UserDataResponse> getPhoto = mApiService.getImage(
            String.valueOf(mPrefs.getUserID()));
    getPhoto.enqueue(new Callback<UserDataResponse>() {
        @Override
        public void onResponse(Call<UserDataResponse> call, Response<UserDataResponse>response) {
            //    String iserror = response.body().getIserror();

            // Jika login berhasil maka data nama yang ada di response API
            // akan diparsing ke activity selanjutnya.
            UserDataResponse userData = response.body();
            //Creating an String array for the ListView
            String error = userData.getIserror();
            List<Image> images = userData.getImages();
            String[] url = new String[images.size()];

            //looping through all the heroes and inserting the names inside the string array
            if (iserror.equals("false")) {
                for (int i = 0; i < images.size(); i++) {
                    url[i] = images.getimage_Url();
                }

                showPhoto(url);
            }

            @Override
            public void onFailure(Call<UserDataResponse> call, Throwable t){
                Log.e("debug", "onFailure: ERROR > " + t.toString());
            }
        });
    }
}

关于java - 如何在数组响应android retrofit2中获取特定的响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59225289/

相关文章:

java - TreeMap - 为什么即使在其中添加超过 2 个元素后它也只返回 1 的大小?

java - 如何实现EJB异步调用的监听器

java - 除了放置 Time.Unit.Seconds.sleep 之外,是否还有一个线程来捕获 InterruptException?

php - PHP 中的 SQL 查询仅适用于函数之外

php - 转置查询结果集

php - 有没有办法在没有 Composer 的情况下安装 Ratchet ?

java - 如何重载一个类

java - 开始我的第一个 Android 应用程序。如何轻松测试服务器是否收到消息?

android - Firebase 不刷新 token

android - 如何检查特定地址的经纬度是否属于城市的纬度和经度?