title: How can i write Android Json parsing without array name
body: <pre><code> package info.androidhive.jsonparsing;
  
  import android.app.ProgressDialog;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.support.v7.app.AppCompatActivity;
  import android.util.Log;
  import android.widget.ListAdapter;
  import android.widget.ListView;
  import android.widget.SimpleAdapter;
  import android.widget.Toast;
  
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  
  public class MainActivity extends AppCompatActivity {
  
  private String TAG = MainActivity.class.getSimpleName();
  
  private ProgressDialog pDialog;
  private ListView lv;
  
  // URL to get contacts JSON
  private static String url = "http://api.androidhive.info/contacts/";
  
  ArrayList&lt;HashMap&lt;String, String&gt;&gt; contactList;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
  
      contactList = new ArrayList&lt;&gt;();
  
      lv = (ListView) findViewById(R.id.list);
  
      new GetContacts().execute();
  }
  
  /**
   * Async task class to get json by making HTTP call
   */
  private class GetContacts extends AsyncTask&lt;Void, Void, Void&gt; {
  
      @Override
      protected void onPreExecute() {
          super.onPreExecute();
          // Showing progress dialog
          pDialog = new ProgressDialog(MainActivity.this);
          pDialog.setMessage("Please wait...");
          pDialog.setCancelable(false);
          pDialog.show();
  
      }
  
      @Override
      protected Void doInBackground(Void... arg0) {
          HttpHandler sh = new HttpHandler();
  
          // Making a request to url and getting response
          String jsonStr = sh.makeServiceCall(url);
  
          Log.e(TAG, "Response from url: " + jsonStr);
  
          if (jsonStr != null) {
              try {
                  JSONObject jsonObj = new JSONObject(jsonStr);
  
                  // Getting JSON Array node
                  JSONArray contacts = jsonObj.getJSONArray("contacts");
  
                  // looping through All Contacts
                  for (int i = 0; i &lt; contacts.length(); i++) {
                      JSONObject c = contacts.getJSONObject(i);
  
                      String id = c.getString("id");
                      String name = c.getString("name");
                      String email = c.getString("email");
                      String address = c.getString("address");
                      String gender = c.getString("gender");
  
                      // Phone node is JSON Object
                      JSONObject phone = c.getJSONObject("phone");
                      String mobile = phone.getString("mobile");
                      String home = phone.getString("home");
                      String office = phone.getString("office");
  
                      // tmp hash map for single contact
                      HashMap&lt;String, String&gt; contact = new HashMap&lt;&gt;();
  
                      // adding each child node to HashMap key =&gt; value
                      contact.put("id", id);
                      contact.put("name", name);
                      contact.put("email", email);
                      contact.put("mobile", mobile);
  
                      // adding contact to contact list
                      contactList.add(contact);
                  }
              } catch (final JSONException e) {
                  Log.e(TAG, "Json parsing error: " + e.getMessage());
                  runOnUiThread(new Runnable() {
                      @Override
                      public void run() {
                          Toast.makeText(getApplicationContext(),
                                  "Json parsing error: " + e.getMessage(),
                                  Toast.LENGTH_LONG)
                                  .show();
                      }
                  });
  
              }
          } else {
              Log.e(TAG, "Couldn't get json from server.");
              runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                      Toast.makeText(getApplicationContext(),
                              "Couldn't get json from server. Check LogCat for possible errors!",
                              Toast.LENGTH_LONG)
                              .show();
                  }
              });
  
          }
  
          return null;
      }
  
      @Override
      protected void onPostExecute(Void result) {
          super.onPostExecute(result);
          // Dismiss the progress dialog
          if (pDialog.isShowing())
              pDialog.dismiss();
          /**
           * Updating parsed JSON data into ListView
           * */
          ListAdapter adapter = new SimpleAdapter(
                  MainActivity.this, contactList,
                  R.layout.list_item, new String[]{"name", "email",
                  "mobile"}, new int[]{R.id.name,
                  R.id.email, R.id.mobile});
  
          lv.setAdapter(adapter);
      }
  
  }
  </code></pre>
  
  <p>}</p>
  
  <p>This is the code i found internet. It works well but my problem is it's getting arrays with an array name. Here is the Json url : <a href="http://api.androidhive.info/contacts/" rel="nofollow noreferrer">http://api.androidhive.info/contacts/</a></p>
  
  <p>And this app also has another class called HttpHandler:</p>
  
  <pre><code>package info.androidhive.jsonparsing;
  
  import android.util.Log;
  
  import java.io.BufferedInputStream;
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.InputStreamReader;
  import java.net.HttpURLConnection;
  import java.net.MalformedURLException;
  import java.net.ProtocolException;
  import java.net.URL;
  
  public class HttpHandler {
  
  private static final String TAG = HttpHandler.class.getSimpleName();
  
  public HttpHandler() {
  }
  
  public String makeServiceCall(String reqUrl) {
      String response = null;
      try {
          URL url = new URL(reqUrl);
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setRequestMethod("GET");
          // read the response
          InputStream in = new BufferedInputStream(conn.getInputStream());
          response = convertStreamToString(in);
      } catch (MalformedURLException e) {
          Log.e(TAG, "MalformedURLException: " + e.getMessage());
      } catch (ProtocolException e) {
          Log.e(TAG, "ProtocolException: " + e.getMessage());
      } catch (IOException e) {
          Log.e(TAG, "IOException: " + e.getMessage());
      } catch (Exception e) {
          Log.e(TAG, "Exception: " + e.getMessage());
      }
      return response;
  }
  
  private String convertStreamToString(InputStream is) {
      BufferedReader reader = new BufferedReader(new InputStreamReader(is));
      StringBuilder sb = new StringBuilder();
  
      String line;
      try {
          while ((line = reader.readLine()) != null) {
              sb.append(line).append('\n');
          }
      } catch (IOException e) {
          e.printStackTrace();
      } finally {
          try {
              is.close();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
      return sb.toString();
  }
  </code></pre>
  
  <p>}</p>
  
  <p>My problem is how can i edit this codes to another url. My json url is here : <a href="http://mysafeinfo.com/api/data?list=englishmonarchs&amp;format=json" rel="nofollow noreferrer">http://mysafeinfo.com/api/data?list=englishmonarchs&amp;format=json</a></p>
  
  <p>As you can see there is no array name. How can i manage with that ? Any help will welcome</p>