org.json.JSONException修正方法:範囲外のインデックス2を[0..2)

アグンジャヤ:

私の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)

Amjad Alwareh:

この行を変更してくださいfor (int k = 0; k < response.length(); k++) {
for (int k = 0; k < jsonArray.length(); k++) {

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=374763&siteId=1