簡體   English   中英

從 JSON 檢索數據但無法從 JSONobject 訪問 Arraylist

[英]Retrieved data from JSON but can't Accessing Arraylist from JSONobject

我是 Android 和 Java 編程的新手,目前正在開發我的技能。

現在,我遇到了從 JSONresponse 訪問 Arraylist 的問題。

只是我不知道如何基於 Json 嵌套對象啟動我的變量,並在不將其設置為 recylerview 等的情況下訪問它。

所以這是 JSON

{"kode":1,
"pesan":"Anda Berhasil Login",
"data":[{"Id_Ortu":"1","NamaLengkapOrtu":"Alpiyan
Yamin"}]}

ResponseModel

public class ResponseModel {
    private int kode;
    private String pesan,sql;
    private List<DataModel> data;

    public String getSql() {
        return sql;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }

    public int getKode() {
        return kode;
    }

    public void setKode(int kode) {
        this.kode = kode;
    }

    public String getPesan() {
        return pesan;
    }

    public void setPesan(String pesan) {
        this.pesan = pesan;
    }

    public List<DataModel> getData() {
        return data;
    }

    public void setData(List<DataModel> data) {
        this.data = data;
    }
}

ResponseModel

public class DataModel {

    private int Id_Perizinan, Id_Ortu;
   private String NamaLengkapSantri, NamaLengkapOrtu, Alasan_Izin, Tgl_Pengajuan,
            Durasi_Izin, Tgl_Kembali;

    public int getId_Perizinan() {
        return Id_Perizinan;
    }

    public void setId_Perizinan(int id_Perizinan) {
        Id_Perizinan = id_Perizinan;
    }

    public int getId_Ortu() {
        return Id_Ortu;
    }

    public void setId_Ortu(int id_Ortu) {
        Id_Ortu = id_Ortu;
    }

    public String getNamaLengkapSantri() {
        return NamaLengkapSantri;
    }

    public void setNamaLengkapSantri(String namaLengkapSantri) {
        NamaLengkapSantri = namaLengkapSantri;
    }

    public String getNamaLengkapOrtu() {
        return NamaLengkapOrtu;
    }

    public void setNamaLengkapOrtu(String namaLengkapOrtu) {
        NamaLengkapOrtu = namaLengkapOrtu;
    }

    public String getAlasan_Izin() {
        return Alasan_Izin;
    }

    public void setAlasan_Izin(String alasan_Izin) {
        Alasan_Izin = alasan_Izin;
    }

    public String getTgl_Pengajuan() {
        return Tgl_Pengajuan;
    }

    public void setTgl_Pengajuan(String tgl_Pengajuan) {
        Tgl_Pengajuan = tgl_Pengajuan;
    }

    public String getDurasi_Izin() {
        return Durasi_Izin;
    }

    public void setDurasi_Izin(String durasi_Izin) {
        Durasi_Izin = durasi_Izin;
    }

    public String getTgl_Kembali() {
        return Tgl_Kembali;
    }

    public void setTgl_Kembali(String tgl_Kembali) {
        Tgl_Kembali = tgl_Kembali;
    }

這就是我嘗試檢索數據的方式

public void loginAplikasi(){

        APIRequestData apiRequestData = RetroServer.koneksiRetrofit().create(APIRequestData.class);
        Call<ResponseModel> loginApp = apiRequestData.ardLogin(username,password);

        loginApp.enqueue(new Callback<ResponseModel>() {

            @Override
            public void onResponse(Call<ResponseModel> call, Response<ResponseModel> response) {
              
                int kode = response.body().getKode();
                String pesan = response.body().getPesan();
                listData = response.body().getData();
                int Id_Ortu = 0;
                String NamaLengkapOrtu;




                  alertDialog(NamaLengkapOrtu);




                    } else {
                        alertDialog(pesan);
                    }
                }


            @Override
            public void onFailure(Call<ResponseModel> call, Throwable t) {
               alertDialog(t.getMessage());
            }
        });

    }

我通過使用成功地從 JSON 中捕獲了 'kode' 和 'pesan'

 int kode = response.body().getKode();
 String pesan = response.body().getPesan();

我已經將 listData 聲明為新的 arraylist

 List<DataModel> listData = new ArrayList<>();

但是,我如何訪問的值

  listData = response.body().getData();

其中包含數據內部的數組

所以我可以啟動變量(NamaLengkapOrtu = listdata(arrayIndex))

提前致謝。

DataModel類的問題。

public class DataModel {

    @SerializedName("Id_Ortu")
    @Expose
    private String idOrtu;
    @SerializedName("NamaLengkapOrtu")
    @Expose
    private String namaLengkapOrtu;
    
    public String getIdOrtu() {
    return idOrtu;
    }
    
    public void setIdOrtu(String idOrtu) {
    this.idOrtu = idOrtu;
    }
    
    public String getNamaLengkapOrtu() {
    return namaLengkapOrtu;
    }
    
    public void setNamaLengkapOrtu(String namaLengkapOrtu) {
    this.namaLengkapOrtu = namaLengkapOrtu;
    }

 }

然后您可以按如下方式訪問數據:

String namaLengkapOrtu = listdata.get(index).getNamaLengkapOrtu();
String idOrtu = listdata.get(index).getIdOrtu();

由於您的 JSON 響應是:

{"kode":1,
"pesan":"Anda Berhasil Login",
"data":[{"Id_Ortu":"1","NamaLengkapOrtu":"Alpiyan
Yamin"}]}

在您的模型類中使用以下注釋:

@SerializedName("data")
@Expose 

在這里,“數據”是您想從 JSON 中獲取的鍵。

嘗試使用這個ResponseModel類:

 public class ResponseModel {
     private int kode;
     private String pesan,SQL;
     @SerializedName("data")
     @Expose     
     private List<DataModel> data;
 
     public String getSql() {
         return sql;
     }
 
     public void setSql(String sql) {
         this.sql = sql;
     }
 
     public int getKode() {
         return kode;
     }
 
     public void setKode(int kode) {
         this.kode = kode;
     }
 
     public String getPesan() {
         return pesan;
     }
 
     public void setPesan(String pesan) {
         this.pesan = pesan;
     }
 
     public List<DataModel> getData() {
         return data;
     }
 
     public void setData(List<DataModel> data) {
         this.data = data;
     }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM