如何解决org.json.JSONException:索引0超出范围[0..0]使用android

时间:2016-08-22 07:19:00

标签: android

我正在开发一个应用程序,在这里我想显示我尝试使用代码的表中提取的项目,但它在此行JSONObject c = result.getJSONObject(0);给出了错误。 我该如何解决这个问题?

  //java file
    public class Details extends Activity {

            TextView uid;
            TextView name1, amount1;
            TextView email1;
            Button Btngetdata;

            //URL to get JSON Array
            private static String url = "http://example.in/ticket1.php";

            //JSON Node Names
            private static final String TAG_USER = "result";
           // private static final String TAG_ID = "id";
            private static final String TAG_NAME = "pname";
            private static final String TAG_AMOUNT = "pamount";

            JSONArray result = null;

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);

                setContentView(R.layout.details);

               Btngetdata = (Button)findViewById(R.id.getdata);
               Btngetdata.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View view) {
                        new JSONParse().execute();

                    }
                });

            }

            private class JSONParse extends AsyncTask<String, String, JSONObject> {
                private ProgressDialog pDialog;
                @Override
                protected void onPreExecute() {
                    super.onPreExecute();
                    uid = (TextView)findViewById(R.id.uid);
                    name1 = (TextView)findViewById(R.id.name);
                    amount1 = (TextView)findViewById(R.id.email);
                    pDialog = new ProgressDialog(Details.this);
                    pDialog.setMessage("Getting Data ...");
                    pDialog.setIndeterminate(false);
                    pDialog.setCancelable(true);
                    pDialog.show();

                }

                @Override
                protected JSONObject doInBackground(String... args) {
                    JSONParser jParser = new JSONParser();

                    // Getting JSON from URL
                    JSONObject json = jParser.getJSONFromUrl(url);
                    return json;
                }
                @Override
                protected void onPostExecute(JSONObject json) {
                    pDialog.dismiss();
                    try {
                        // Getting JSON Array
                        result = json.getJSONArray(TAG_USER);
                        JSONObject c = result.getJSONObject(0);

                        // Storing  JSON item in a Variable
                    //    String id = c.getString(TAG_ID);
                        String name = c.getString(TAG_NAME);
                        String amount = c.getString(TAG_AMOUNT);

                        //Set JSON Data in TextView
                    //    uid.setText(id);
                        name1.setText(name);
                        amount1.setText(amount);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }

        }

1 个答案:

答案 0 :(得分:0)

在迭代结果数组之前检查结果数组的大小。

@Override
protected void onPostExecute(JSONObject json) {
{
 pDialog.dismiss();
 try {
  // Getting JSON Array
  result = json.getJSONArray(TAG_USER);
  if (result.length() > 0) {
   JSONObject c = result.getJSONObject(0);

   // Storing  JSON item in a Variable
   //    String id = c.getString(TAG_ID);
   String name = c.getString(TAG_NAME);
   String amount = c.getString(TAG_AMOUNT);

   //Set JSON Data in TextView
   //    uid.setText(id);
   name1.setText(name);
   amount1.setText(amount);
  }

 } catch (JSONException e) {
  e.printStackTrace();
 }
}