简体   繁体   中英

How to fix org.json.JSONException: Index 2 out of range [0..2)

i getting error when get data from json below my api response :

{"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"}]}

below my request code using volley:

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();
                }
            })

and this is my 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)

03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at org.json.JSONArray.get(JSONArray.java:293) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at org.json.JSONArray.getJSONObject(JSONArray.java:521) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.imdvlpr.starppob.Activity.TransaksiPembelianActivity$2.onResponse(TransaksiPembelianActivity.java:132) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.imdvlpr.starppob.Activity.TransaksiPembelianActivity$2.onResponse(TransaksiPembelianActivity.java:122) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at android.os.Handler.handleCallback(Handl er.java:739) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at android.os.Looper.loop(Looper.java:234) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5526) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at java.lang.reflect.Method.invoke(Native Method) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 03-31 21:09:33.126 27948-27948/com.imdvlpr.starppob W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Please change this line for (int k = 0; k < response.length(); k++) {
to for (int k = 0; k < jsonArray.length(); k++) { .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM