title: JSONException: Value of type java.lang.String cannot be converted to JSONObject
body: <p>I am facing a problem, a valid JSON string cannot become a JSON object.</p>
  
  <p>I have tested the response coming from the server, it is a valid JSON.</p>
  
  <p>I have checked on the internet, it is about the problem of UTF-8 with DOM. But even I changed the charset in Notepad++ into UTF-8 with no DOM, the same error still coming out.</p>
  
  <p>My codes:</p>
  
  <pre><code>&lt;?php
      require_once("Connection/conn.php");
  
  
      //parse JSON and get input
      $json_string = $_POST['json'];
      $json_associative_array = json_decode($json_string,true);
  
      $userId = $json_associative_array["userId"];
      $password = $json_associative_array["password"];
      $userType = $json_associative_array["userType"];    
  
      //get the resources
      $json_output_array = array();
  
      $sql = "SELECT * FROM account WHERE userId = '$userId' AND password = '$password' AND userType = '$userType'";  
      $result = mysql_query($sql);  
  
      //access success?
      if (!$result) {
          die('Invalid query: ' . mysql_error());
          $json_output_array["status"] = "query failed";
      }
      else{
          $json_output_array["status"] = "query success";
      }
  
      //find the particular user?
      if (mysql_num_rows($result) &gt; 0){
          $json_output_array["valid"] = "yes";
      }
      else{
          $json_output_array["valid"] = "no";
      }
  
      //output JSON 
      echo json_encode($json_output_array);
  ?&gt;
  </code></pre>
  
  <p>Android codes:</p>
  
  <pre><code>public boolean login() {
          // instantiates httpclient to make request
          DefaultHttpClient httpClient = new DefaultHttpClient();
  
          // url with the post data
          String url = SERVER_IP + "/gc/login.php";
  
          JSONObject holder = new JSONObject();
          try {
              holder.put("userId", "S1");
              holder.put("password", "s12345");
              holder.put("userType", "supervisor");
          } catch (JSONException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
  
          Log.d("JSON", holder.toString());
  
  
          // HttpPost
          HttpPost httpPost = new HttpPost(url);
  
  
          //FormEntity
          ArrayList&lt;NameValuePair&gt; nameValuePairs = new ArrayList&lt;NameValuePair&gt;();
          nameValuePairs.add(new BasicNameValuePair("json", holder.toString()));
  
          try {
              httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
          } catch (UnsupportedEncodingException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
  
          // execution and response
          boolean valid = false; 
          try {
              HttpResponse response = httpClient.execute(httpPost);
  
              Log.d("post request", "finished execueted");
              String responseString = getHttpResponseContent(response);
              Log.d("post result", responseString);
  
              //parse JSON
              JSONObject jsonComeBack = new JSONObject(responseString);
              String validString = jsonComeBack.getString("valid");
              valid = (validString.equals("yes"))?true:false;
  
          } catch (ClientProtocolException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          } catch (JSONException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
  
  
          return valid;
  
      }
  
      private String getHttpResponseContent(HttpResponse response) {
  
          String responseString = "";
  
          try {
              BufferedReader rd = new BufferedReader(new InputStreamReader(
                      response.getEntity().getContent()));
  
              String line = "";
  
              while ((line = rd.readLine()) != null) {
                  responseString += line ;
              }
              rd.close();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
          return responseString;
      }
  </code></pre>
  
  <p>JSON come from server:</p>
  
  <pre><code>{
      "status": "query success",
      "valid": "yes"
  }
  </code></pre>
  
  <p>unformat JSON:</p>
  
  <p><code>{"status":"query success","valid":"yes"}</code></p>
  
  <p>When I copy this into notepad++, it becomes <code>?{"status":"query success","valid":"yes"}</code>
  It seems that there is a invisible character .</p>