私のAPIレスポンスの下にJSONからデータを取得するとき、私はエラーを取得します:
{"success":true,"id":"4","name":"VOUCHER GOOGLE PLAY","data":[{"id":10,"product_id":"GLP","product_name":"GOOGLE PLAY","prefix":null,"pembeliankategori_id":"4","status":"1"},{"id":11,"product_id":"GP","product_name":"GOOGLE PLAY ID","prefix":null,"pembeliankategori_id":"4","status":"1"}]}
ボレーを使用して、私の要求コード以下:
String URL_READ = "https://tripay.co.id/api/v2/pembelian/operator/bycategory?id=" + strCategoryId;
System.out.print(URL_READ);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, URL_READ,null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
progressDialog.dismiss();
System.out.println(response);
try{
JSONArray jsonArray = response.getJSONArray("data");
Gson gson = new Gson();
for (int k = 0; k < response.length(); k++) {
JSONObject jsonObject = jsonArray.getJSONObject(k);
ProdukProvider data = gson.fromJson(String.valueOf(jsonObject), ProdukProvider.class);
Integer strProviderId = jsonObject.getInt("id");
String strProviderProduk = jsonObject.getString("product_name").trim();
String strProviderStatus = jsonObject.getString("status").trim();
produkList.add(data);
provider.add(new ProviderAdapter(strProviderProduk, strProviderId));
}
ArrayAdapter<ProviderAdapter> spinnerArrayAdapter = new ArrayAdapter<>(TransaksiPembelianActivity.this, R.layout.item_spinner, provider);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down view
spn_provider.setAdapter(spinnerArrayAdapter);
progressDialog.dismiss();
spn_provider.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
ProviderAdapter swt = (ProviderAdapter) parent.getItemAtPosition(position);
noid = (Integer) swt.tag;
requestNominal();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
} catch (JSONException e) {
e.printStackTrace();
progressDialog.dismiss();
Toast.makeText(TransaksiPembelianActivity.this, "Error "+e.toString(), Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
Toast.makeText(TransaksiPembelianActivity.this, "Error "+error.toString(), Toast.LENGTH_SHORT).show();
}
})
これは私のlogcatです。
03-31 21:09:33.122 27948-27948/com.imdvlpr.starppob W/System.err: org.json.JSONException: Index 2 out of range [0..2)
3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:org.json.JSONArray.get(JSONArray.java:293)で3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:org.json.JSONArray.getJSONObject(JSONArray.java:521)3月31日21時でcom.imdvlpr.starppob.Activity.TransaksiPembelianActivity $ 2.onResponse(TransaksiPembelianActivity.java:132)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:com.imdvlpr.starppob.Activityで.TransaksiPembelianActivity $ 2.onResponse(TransaksiPembelianActivity.java:122)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:com.android.volley.toolbox.JsonRequest.deliverResponseで(JsonRequest。ジャワ:83)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:com.android.volleyました。ExecutorDelivery $ ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:android.os.Handler.handleCallback(Handler.java:739)で3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:android.os.Handler.dispatchMessage(Handler.java:95)で3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:android.os.Looper.loop(Looper.java:234)3月31日21時でandroid.app.ActivityThread.main(ActivityThread.java:5526)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:java.lang.reflect.Method.invokeで(ネイティブメソッド)3月31日21:09:33.126 27948から27948 / com.imdvlpr.starppob W / System.errの:com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)で3月31日21: 09:33.126 27948から27948 / com.imdvlpr。starppob W / System.errの:com.android.internal.os.ZygoteInit.mainで(ZygoteInit.java:616)
この行を変更してくださいfor (int k = 0; k < response.length(); k++) {
にfor (int k = 0; k < jsonArray.length(); k++) {
。