title: JSON Exception Error
body: <p>I am getting the following error on logcat when I run my application. I had many errors before which I have managed to resolve after doing some research. However, this one I am unable to figure out:</p>
  
  <pre><code>03-04 02:52:29.475: E/JustDealsUtils(1913): Error parsing to json on getJarrayFromString(); org.json.JSONException: Expected ':' after result at character 8 of {result}
  </code></pre>
  
  <p>EDIT 1:</p>
  
  <p>The error now is:</p>
  
  <pre><code>Error parsing to json on getJarrayFromString(); org.json.JSONException: Value result of type java.lang.String cannot be converted to JSONArray
  </code></pre>
  
  <p>Also linked to this is error for fillproductlist()</p>
  
  <p>Here is my Java Code for this:</p>
  
  <pre><code>public void onTaskCompleted(String result) {
                          try {  
                              if(result!=""){
                                  // the remote php link 
                                  // converting the response into json array
                                  Log.i(DEBUG, result);
                                  jarray = utils.getJarrayFromString(result);
  
                                  // number of rows in total for a query
                                  int mysqlSize = (jarray.getJSONObject(0).getInt("numRows"));
  
                                  Log.i(DEBUG, "From " + from + " to " + mysqlSize);
  
                                  // to check if all the rows are parsed from the mysql
                                  if(from &lt;= mysqlSize){
                                      int rows;
                                      // to check if there is 0
                                      if(jarray.length()&gt;0){
                                          Log.i(DEBUG, "From " + from + " to " + Math.floor(mysqlSize/nr)*nr);
                                          if(from+5&lt;=Math.floor(mysqlSize/nr)*nr){
                                              rows = jarray.length();
                                          }else{
                                              rows = mysqlSize%nr+1;
                                              Utils.IS_ENDED_PRODUCT_LIST = true;
                                          }
                                          ArrayList&lt;String&gt; list = new ArrayList&lt;String&gt;();
                                          for(int i=1; i&lt;rows; i++){
                                              JSONObject row = jarray.getJSONObject(i);
                                              bid.add(row.getInt("bid"));
                                              bTitle.add(row.getString("bTitle"));
                                              bCode.add(row.getString("bCode"));
                                              bPrice.add(row.getString("bPrice") + "£");
                                              bDescription.add(row.getString("bDescription"));
                                              bModule.add(row.getString("bModule"));
                                              bImage.add(Utils.PATH + row.getString("bImage"));
                                              list.add(row.getString("bImage"));
                                              // to check if an id already exists in the db or to create one if doesn't exist
                                              if(!db.hasIDBooks(row.getInt("bid"))) db.createRowOnBooks(row.getInt("bid"), row.getString("bTitle"), row.getString("bCode"), row.getString("bPrice"), row.getString("bDescription"), row.getString("bModule"), Utils.PATH + row.getString("bImage"), row.getString("bSpecialOffer"), row.getInt("bSpecialDiscount"), row.getString("bDateAdded"));
                                              Log.i(DEBUG, row.getString("bDescription"));
                                          }
                                          new DownloadImages(list, bAdapter).execute();
                                      }
                                  }
                                  postParameters.removeAll(postParameters);
                              }else{
                                  Utils.IS_ENDED_PRODUCT_LIST = true;
                                  if(rlLoading.isShown()){
                                      rlLoading.startAnimation(fadeOut());
                                      rlLoading.setVisibility(View.INVISIBLE);
                                  }
                              }
                          } catch (Exception e) {  
                              Log.e(DEBUG, "Error at fillProductList(): " + e.toString());  
                          }
                      }
                  });
                  task.execute();
  
          }else{
              // if internet connectio is not available
              // then, rows will be fetched from the local sqllite database stored on the android phone
              if(db.size(justdealsDatabase.TABLE_BOOKS) &gt; 0){
                  Cursor cursor = db.getBooksRows(justdealsDatabase.TABLE_BOOKS);
                  cursor.moveToFirst();
                  while(!cursor.isAfterLast()){
                      bid.add(cursor.getInt(cursor.getColumnIndex(justdealsDatabase.KEY_BID)));
                      bTitle.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BTITLE)));
                      bCode.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BCODE)));
                      bPrice.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BPRICE))+ "£");
                      bDescription.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BDESCRIPTION)));
                      bModule.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BMODULE)));
                      bImage.add(cursor.getString(cursor.getColumnIndex(justdealsDatabase.KEY_BIMAGE)));
                      cursor.moveToNext();
                  }
                  bAdapter.notifyDataSetChanged();
                  Utils.IS_ENDED_PRODUCT_LIST = true;
              }
          }
      }
  </code></pre>
  
  <p>MY JSON ARRAY CODE ( FULL EDIT 2):</p>
  
  <pre><code>public String getJsonFromUrl(String url){
  
          // to initialise the objects
          InputStream is = null;
          String result = "";
  
          //making HTTP POST request
          try {
              HttpClient httpClient = new DefaultHttpClient();
              HttpPost httpPost = new HttpPost(url);
              HttpResponse response = httpClient.execute(httpPost);
              HttpEntity entity = response.getEntity();
              is = entity.getContent();
          }catch(Exception e){
              Log.e(DEBUG, "Error getJsonFromUrl: " + e.toString());
          }
  
          // Converting to String
          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();
              result=sb.toString();
          }catch(Exception e){
              Log.e(DEBUG, "Error converting the response to string getJsonFromUrl: " + e.toString());
          }
  
          return result;
      }
  
      /**
       * To convert the string recieved into json object
       * result refers to the string that will be converted
       * @return will return the json array
       */
      public JSONArray getJarrayFromString(String result){
          // Parsing string to JSON Array
          try{
              jarray = new JSONArray("result");
          }catch(JSONException e){
              Log.e(DEBUG, "Error parsing to json on getJarrayFromString(); " + e.toString());
          }
  
          return jarray;
      }
  </code></pre>
  
  <p>And My PHP API (EDIT 1):</p>
  
  <pre><code>    &lt;?php
      include("MysqlConnection.php");
      header('Content-Type: application/json');
      $from = $_POST["from"];
      $nr = $_POST["nr"];
      // those variables are for search
      $title = $_POST["title"];
      $code = $_POST["code"];
      $price = $_POST["price"];
      $module = $_POST["module"];
      $order = $_POST["order"];
      $by = $_POST["by"];
  
  
      $sql = "SET CHARACTER SET utf8";
      $db-&gt;query($sql);
  
  
          // if those 2 var are set then we order the query after them
          if(isset($order) &amp;&amp; isset($by)){
              $sql .= " ORDER BY `$order` $by LIMIT $from, $nr";
          }else{
              $sql .= "LIMIT $from, $nr";
          }
  
          $query = $db-&gt;query($sql);
          $rows = array();
          $rows[] = array("numRows"=&gt;$db-&gt;numRows($query));
  
          if($db-&gt;numRows($query)!=0){
              while($row = mysql_fetch_assoc($query)) {
                  $rows[] =  $row;
              }
              echo(json_encode($rows));
          }
      }
  
      $db-&gt;closeConnection();
  ?&gt;
  </code></pre>
  
  <p>I have implemented all the suggestions recommended by you guys, still there is no luck in getting this code work!!!! </p>
  
  <p>I AM NOT SURE WHY VALUE OF 'RESULT' STRING CANNOT BE CONVERTED INTO JSONARRAY????</p>
  
  <p>I have shown you the JSON ARRAY Declaration, RESULT STRING DECLARATION as well as PHP (See Above for edited versions)</p>