title: How to parse JSON object from PHP URL
body: <p>I am new to Android and I have a PHP URL that have JSON objects and I want to parse it and show the items in list view in my application.</p>
  
  <p>I read some resources but some of them are not for PHP URL.</p>
  
  <pre><code>[
  {
      "Title": "Russian Textile: Printed Cotton from Traditional Patterns to Soviet Propaganda Design",
      "Image": "http://www.moc.gov.bh//en/TheEvents/CurrentEvents/Image,10460,en-67x100.jpg",
      "Category": " Exhibition ",
      "Venue": " The National Museum hall 8 and 9 ",
      "Date ": " 9 October - 8 December 2013 "
  },
  </code></pre>
  
  <p>This code works but the url not .php </p>
  
  <p>AndroidJSONParsingActivity.java</p>
  
  <pre><code>  public class AndroidJSONParsingActivity extends ListActivity {
  
  // url to make request
  private static String url = "http://api.androidhive.info/contacts/";
  
  // JSON Node names
  private static final String TAG_CONTACTS = "contacts";
  private static final String TAG_ID = "id";
  private static final String TAG_NAME = "name";
  private static final String TAG_EMAIL = "email";
  private static final String TAG_ADDRESS = "address";
  private static final String TAG_GENDER = "gender";
  private static final String TAG_PHONE = "phone";
  private static final String TAG_PHONE_MOBILE = "mobile";
  private static final String TAG_PHONE_HOME = "home";
  private static final String TAG_PHONE_OFFICE = "office";
  
  // contacts JSONArray
  JSONArray contacts = null;
  
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      // Hashmap for ListView
      ArrayList&lt;HashMap&lt;String, String&gt;&gt; contactList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;();
  
      // Creating JSON Parser instance
      JSONParser jParser = new JSONParser();
  
      // getting JSON string from URL
      JSONObject json = jParser.getJSONFromUrl(url);
  
      try {
          // Getting Array of Contacts
          contacts = json.getJSONArray(TAG_CONTACTS);
  
          // looping through All Contacts
          for(int i = 0; i &lt; contacts.length(); i++){
              JSONObject c = contacts.getJSONObject(i);
  
              // Storing each json item in variable
              String id = c.getString(TAG_ID);
              String name = c.getString(TAG_NAME);
              String email = c.getString(TAG_EMAIL);
              String address = c.getString(TAG_ADDRESS);
              String gender = c.getString(TAG_GENDER);
  
              // Phone number is agin JSON Object
              JSONObject phone = c.getJSONObject(TAG_PHONE);
              String mobile = phone.getString(TAG_PHONE_MOBILE);
              String home = phone.getString(TAG_PHONE_HOME);
              String office = phone.getString(TAG_PHONE_OFFICE);
  
              // creating new HashMap
              HashMap&lt;String, String&gt; map = new HashMap&lt;String, String&gt;();
  
              // adding each child node to HashMap key =&gt; value
              map.put(TAG_ID, id);
              map.put(TAG_NAME, name);
              map.put(TAG_EMAIL, email);
              map.put(TAG_PHONE_MOBILE, mobile);
  
              // adding HashList to ArrayList
              contactList.add(map);
          }
      } catch (JSONException e) {
          e.printStackTrace();
      }
  
  
      /**
       * Updating parsed JSON data into ListView
       * */
      ListAdapter adapter = new SimpleAdapter(this, contactList,
              R.layout.list_item,
              new String[] { TAG_NAME, TAG_EMAIL, TAG_PHONE_MOBILE }, new int[] {
                      R.id.name, R.id.email, R.id.mobile });
  
      setListAdapter(adapter);
  
      // selecting single ListView item
      ListView lv = getListView();
  
      // Launching new screen on Selecting Single ListItem
      lv.setOnItemClickListener(new OnItemClickListener() {
  
          @Override
          public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                  int position, long id) {
              // getting values from selected ListItem
              String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
              String cost = ((TextView) view.findViewById(R.id.email)).getText().toString();
              String description = ((TextView)    view.findViewById(R.id.mobile)).getText().toString();
  
              // Starting new intent
              Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
              in.putExtra(TAG_NAME, name);
              in.putExtra(TAG_EMAIL, cost);
              in.putExtra(TAG_PHONE_MOBILE, description);
              startActivity(in);
  
          }
      });
  
  
  
  }
  
  }
  </code></pre>
  
  <p>JSONParser.java</p>
  
  <pre><code>  public class JSONParser {
  
  static InputStream is = null;
  static JSONObject jObj = null;
  static String json = "";
  
  // constructor
  public JSONParser() {
  
  }
  
  public JSONObject getJSONFromUrl(String url) {
  
      // Making HTTP request
      try {
          // defaultHttpClient
          DefaultHttpClient httpClient = new DefaultHttpClient();
          HttpPost httpPost = new HttpPost(url);
  
           HttpResponse httpResponse = httpClient.execute(httpPost);
          HttpEntity httpEntity = httpResponse.getEntity();
          is = httpEntity.getContent();           
  
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      } catch (ClientProtocolException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
  
      try {
          BufferedReader reader = new BufferedReader(new InputStreamReader(
      is, "iso-8859-1"), 8);
          StringBuilder sb = new StringBuilder();
          String line = null;
          while ((line = reader.readLine()) != null) {
              sb.append(line + "\n");
           }
          is.close();
          json = sb.toString();
      } catch (Exception e) {
          Log.e("Buffer Error", "Error converting result " + e.toString());
      }
  
      // try parse the string to a JSON object
      try {
          jObj = new JSONObject(json);
      } catch (JSONException e) {
          Log.e("JSON Parser", "Error parsing data " + e.toString());
      }
  
      // return JSON String
      return jObj;
  
  }
   }
  
  public class SingleMenuItemActivity  extends Activity {
  
  // JSON node keys
  private static final String TAG_NAME = "name";
  private static final String TAG_EMAIL = "email";
  private static final String TAG_PHONE_MOBILE = "mobile";
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.single_list_item);
  
      // getting intent data
      Intent in = getIntent();
  
      // Get JSON values from previous intent
      String name = in.getStringExtra(TAG_NAME);
      String cost = in.getStringExtra(TAG_EMAIL);
      String description = in.getStringExtra(TAG_PHONE_MOBILE);
  
      // Displaying all values on the screen
      TextView lblName = (TextView) findViewById(R.id.name_label);
      TextView lblCost = (TextView) findViewById(R.id.email_label);
      TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
  
      lblName.setText(name);
      lblCost.setText(cost);
      lblDesc.setText(description);
  }
  }
  </code></pre>