title: I am getting Error parsing data org.json.JSONException
body: <p>I am getting this error in my LogCat:</p>
  
  <pre><code>Error parsing data org.json.JSONException: Value ﻿ of type java.lang.String cannot be converted to JSONArray
  </code></pre>
  
  <p>Below are every file I could show you! Please let me know the problem and its solution ASAP. What I guess is:
   1. Maybe the is problem is with parsing data in JSON array.
   2. Maybe the problem is with my php api, I think I am not properly encoding the json_encode because it gives me RAW JSON, like every thing in one line.</p>
  
  <p>as below </p>
  
  <pre><code>﻿[{"uid":"120","name":"MyFirstName MyLastName"}]
  </code></pre>
  
  <p>Please also let me know, their is some difference in working of both format, 1. Raw JSON and 2. Intented Json</p>
  
  <p>below is the intented json format</p>
  
  <pre><code>﻿[
      {
      "uid":"120",
      "name":"MyFirstName MyLastName"
      }
  ]
  </code></pre>
  
  <p>Here is the JSONUseActivity.java</p>
  
  <pre><code>package com.example.oncemore;
  import java.util.ArrayList;
  import org.apache.http.NameValuePair;
  import org.apache.http.message.BasicNameValuePair;
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  import android.app.Activity;
  import android.os.Bundle;
  import android.os.StrictMode;
  
  import com.example.oncemore.CustomHttpClient;
  
  import android.util.Log;
  import android.view.View;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.TextView;
  
  public class JSONUseActivity extends Activity {
  
  EditText email,password; 
  Button submit;
  TextView tv; // TextView to show the result of MySQL query
  String returnString; // to store the result of MySQL query after decoding
  // JSON
  /** Called when the activity is first created. */
  @Override
  
  public void onCreate(Bundle savedInstanceState) {
      StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
      .detectDiskReads().detectDiskWrites().detectNetwork() // StrictMode is
              // most commonly
              // used to catch
              // accidental
              // disk or
              // network
              // access on the
              // application's
              // main thread
              .penaltyLog().build());
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_jsonuse);
  
      email = (EditText) findViewById(R.id.email);
      password = (EditText) findViewById(R.id.password);
      submit = (Button) findViewById(R.id.submitbutton);
      tv = (TextView) findViewById(R.id.showresult);
  
      // define the action when user clicks on submit button
      submit.setOnClickListener(new View.OnClickListener() {
          public void onClick(View v) {
              // declare parameters that are passed to PHP script i.e. the
              ArrayList&lt;NameValuePair&gt; postParameters = new ArrayList&lt;NameValuePair&gt;();
              // define the parameter
              postParameters.add(new BasicNameValuePair("email",email.getText().toString()));
              postParameters.add(new BasicNameValuePair("password",password.getText().toString()));
              String response = null;
              // call executeHttpPost method passing necessary parameters
              try {
                  response = CustomHttpClient.executeHttpPost(
                          "http://mywebsite.com/android/api.php",
                          postParameters);
                  // store the result returned by PHP script that runs MySQL
                  // query
                  String result = response.toString();
                  // parse json data
                  try {
                      returnString = "";
      //I think the line below is creating some problem 
                      JSONArray jArray = new JSONArray(result);
                      for (int i = 0; i &lt; jArray.length(); i++) {
                          JSONObject json_data = jArray.getJSONObject(i);
                          Log.i("log_tag",
                          "id: " + json_data.getInt("uid")+", name: " + json_data.getString("name"));
                          // Get an output to the screen
                          returnString += "\n" + json_data.getString("name")
                                  + " -&gt; " + json_data.getInt("uid");
                      }
                  }catch (JSONException e) {
                      Log.e("log_tag", "Error parsing data " + e.toString());
                  }
                  try {
                      tv.setText(returnString);
                  }
                  catch (Exception e) {
                      Log.e("log_tag", "Error in Display!" + e.toString());
                      ;
                  }
              }
              catch (Exception e) {
                  Log.e("log_tag",
                          "Error in http connection!!" + e.toString());
              }
          }
      });
  }
  </code></pre>
  
  <p>}</p>
  
  <p>Here is the CustomHttpClient.java</p>
  
  <pre><code>package com.example.oncemore;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.net.URI;
  import java.util.ArrayList;
  import org.apache.http.HttpResponse;
  import org.apache.http.NameValuePair;
  import org.apache.http.client.HttpClient;
  import org.apache.http.client.entity.UrlEncodedFormEntity;
  import org.apache.http.client.methods.HttpGet;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.conn.params.ConnManagerParams;
  import org.apache.http.impl.client.DefaultHttpClient;
  import org.apache.http.params.HttpConnectionParams;
  import org.apache.http.params.HttpParams;
  import android.util.Log;
  
  public class CustomHttpClient {
   /** The time it takes for our client to timeout */
   public static final int HTTP_TIMEOUT = 30 * 1000; // milliseconds
   /** Single instance of our HttpClient */
   private static HttpClient mHttpClient;
   /**
    * Get our single instance of our HttpClient object.
    * 
    * @return an HttpClient object with connection parameters set
    */
   private static HttpClient getHttpClient() {
    if (mHttpClient == null) {
     mHttpClient = new DefaultHttpClient();
     final HttpParams params = mHttpClient.getParams();
     HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
     HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
     ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
    }
    return mHttpClient;
   }
   /**
    * Performs an HTTP Post request to the specified url with the specified
    * parameters.
    * 
    * @param url
    *            The web address to post the request to
    * @param postParameters
    *            The parameters to send via the request
    * @return The result of the request
    * @throws Exception
    */
   public static String executeHttpPost(String url, ArrayList&lt;NameValuePair&gt; postParameters) throws Exception {
    BufferedReader in = null;
    try {
     HttpClient client = getHttpClient();
     HttpPost request = new HttpPost(url);
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
     request.setEntity(formEntity);
     HttpResponse response = client.execute(request);
     in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
     StringBuffer sb = new StringBuffer("");
     String line = "";
     String NL = System.getProperty("line.separator");
     while ((line = in.readLine()) != null) {
      sb.append(line + NL);
     }
     in.close();
     String result = sb.toString();
     return result;
    } finally {
     if (in != null) {
      try {
       in.close();
      } catch (IOException e) {
       Log.e("log_tag", "Error converting result "+e.toString()); 
       e.printStackTrace();
      }
     }
    }
   }
   /**
    * Performs an HTTP GET request to the specified url.
    * 
    * @param url
    *            The web address to post the request to
    * @return The result of the request
    * @throws Exception
    */
   public static String executeHttpGet(String url) throws Exception {
    BufferedReader in = null;
    try {
     HttpClient client = getHttpClient();
     HttpGet request = new HttpGet();
     request.setURI(new URI(url));
     HttpResponse response = client.execute(request);
     in = new BufferedReader(new InputStreamReader(response.getEntity()
       .getContent()));
     StringBuffer sb = new StringBuffer("");
     String line = "";
     String NL = System.getProperty("line.separator");
     while ((line = in.readLine()) != null) {
      sb.append(line + NL);
     }
     in.close();
     String result = sb.toString();
     return result;
    } finally {
     if (in != null) {
      try {
       in.close();
      } catch (IOException e) {
       Log.e("log_tag", "Error converting result "+e.toString()); 
       e.printStackTrace();
      }
     }
    }
   }
  }
  </code></pre>
  
  <p>Here is the api.php</p>
  
  <pre><code>&lt;?php
  require_once("../contactdb.php");
  $myusername=$_REQUEST["email"]; 
  $mypassword=$_REQUEST["password"]; 
  // To protect MySQL injection (more detail about MySQL injection)
  $myusername = stripslashes($myusername);
  $mypassword = stripslashes($mypassword);
  $myusername = mysql_real_escape_string($myusername);
  $mypassword = mysql_real_escape_string($mypassword);
  $sql="SELECT uid,name FROM u_info WHERE email='".$myusername."' AND password ='".$mypassword."'";
  $result=mysql_query($sql);
  // Mysql_num_row is counting table row
  $count=mysql_num_rows($result);
  if($count==1){
      while($row=mysql_fetch_assoc($result))
      $output[]=$row;
      echo json_encode($output);
      mysql_close();
  }else{
      echo "Error Occured!";
  }
  ?&gt;
  </code></pre>
  
  <p>Finally, When I goto browser and write like this</p>
  
  <pre><code>http://mywebsite.com/android/api.php?email=myname@yahoo.com&amp;password=1234
  </code></pre>
  
  <p>I got this json array!</p>
  
  <pre><code>﻿[{"uid":"120","name":"MyFirstName MyLastName"}]
  </code></pre>
  
  <p>So Far I google, I have found different formats of json array! I found everywhere Intented Json. My json array is currently in Raw Json format. I don't find anywhere how to convert Raw Json format into Intented Json format.</p>
  
  <p>Thanks in advance guys!
  Any help would be appreciated! If possible, please provide the correct code!</p>