2015-01-31 6 views
3

Я новичок в android, но я нашел приложение, которое отлично подойдет для веб-скребка, с которым я очень много работал, и заполнил с. Это базовое приложение, которое извлекает значения из базы данных MySQL с помощью PHP-скрипта и отображает их на вашем устройстве Android.JSONException: значение типа java.lang.String не может быть преобразовано в JSONObject

Вот PHP:

<?php 
try { 
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, *******); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $results=$conn->query('SELECT * FROM Recipes'); 

    while ($results = $row->fetch(PDO::FETCH_ASSOC)){ 
    $output[]=$row; 
    print(json_encode($output)); 
    } 

} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 
$conn = null; 
?> 

Исходный код используется mysql_connect, но я реализовал PDO вместо этого.

Вот Java:

protected void onPostExecute(Void v) { 

     // ambil data dari Json database 
     try { 
      JSONArray Jarray = new JSONArray(result); 
      for(int i=0;i<Jarray.length();i++) 
      { 
      JSONObject Jasonobject = null; 
      //text_1 = (TextView)findViewById(R.id.txt1); 
      Jasonobject = Jarray.getJSONObject(i); 

      //get an output on the screen 
      //String id = Jasonobject.getString("id"); 
      String name = Jasonobject.getString("Title"); 
      String db_detail=""; 

      if(et.getText().toString().equalsIgnoreCase(name)) { 
      db_detail = Jasonobject.getString("ingredient"); 
      text.setText(db_detail); 
      break; 
      } 
      //text_1.append(id+"\t\t"+name+"\t\t"+password+"\t\t"+"\n"); 

      } 
      this.progressDialog.dismiss(); 

     } catch (Exception e) { 
      // TODO: handle exception 
      Log.e("log_tag", "Error parsing data "+e.toString()); 
     } 
    } 

Logcat говорит:

Ошибка org.json.JSONException разбора данных: Значение уш типа java.lang.String не могут быть преобразованы в JSONArray

Я попытался использовать {left brace и} правое решение с this stackoverflow question, но я не думаю, что все.

+0

показать свою JSON ответ. – Riser

+0

«Название» или «ингредиент» может быть json-объектом, и вы получаете его в строке. измените его на Jasonobject.getJSONObject («Title») или Jasonobject.getJSONObject («component») – Jigar

+0

@Camil Staps Я сделал все PDO благодарю вас за подсказку. – Claphands

ответ

1
<?php 
try { 
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, ********); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 

$sql=mysql_query("select * from Recipes"); 
while($row=mysql_fetch_assoc($sql)) 
$output[]=$row; 
print(json_encode($output)); 
mysql_close(); 
?> 

Это doesn'tdo ничего. Вы смешиваете mysql_ * и PDO, который равен notpossible. Если вы устанавливаете соединение с PDO, вы не можете использовать запросы mysql_ * для доступа к базе данных.

Из-за этого вы получаете ошибки, и ваша страница недействительна Json, что вызывает ошибку.

Вместо этого следует использовать только (не рекомендуется mysql_ * из-за вопросов безопасности) PDO:

<?php 
try { 
    $conn = new PDO('mysql:host=localhost;dbname=beanbag', **********, ********); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
} 

$sql = $conn->query("select * from Recipes"); 
while (($row = $sql->fetch(PDO::FETCH_ASSOC)) !== false) 
    $output[]=$row; 
print(json_encode($output)); 
?> 
3

В случае выполнения post выполните сначала JSONObject, затем массив. Если это же сообщение, то ваш сервер не возвращает правильный json-объект.

JSONObject jobj = new JSONObject(result); 
JSONArray Jarray = jobj.getJSONArray("output"); 
-1

Если ваш результат список массив, то Вы можете сделать это, используя следующий код

ArrayList<String> list = new ArrayList<String>(); 
list.add("blah"); 
list.add("bleh"); 
JSONArray jsArray = new JSONArray(list); 
+0

есть один вопрос, похожий на ваш, который может помочь вам связаться с вопросом, находится здесь http://stackoverflow.com/questions/2818697/sending-and-parsing-json-in-android –

Смежные вопросы