2013-11-23 4 views
-1

Я хочу сделать простую деятельность, которая получает только одно значение из базы данных (там всего 1). Но у меня одна большая проблема. Я всегда получаю ту же ошибку в LogCat: «Ошибка разбора data.org.json.JSONException:. Значение 1nulln типа java.lang.String не могут быть преобразованы в JSONArray» Вот мой код:Проблемы с JSON и MySQL

public class DailyQ extends Activity { 
    InputStream is; 
    String quest; 
    JSONObject json_data; 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.daily_q); 
      getData(); 

    } 


      public void getData() { 
       StrictMode.ThreadPolicy policy = new 
         StrictMode.ThreadPolicy.Builder() 
         .permitAll().build(); 
         StrictMode.setThreadPolicy(policy); 

       String result = ""; 
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

        try{ 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpPost httppost = new HttpPost("http://domain.com/file.php"); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       HttpResponse response = httpclient.execute(httppost); 
        HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
        }catch(Exception e){ 
       Log.e("log_tag", "Fehler bei der http Verbindung "+e.toString()); 
        } 
        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("log_tag", "Error converting result "+e.toString()); 

          } 
        try{ 
          JSONArray jArray = new JSONArray(result); 
          for(int i=0;i<jArray.length();i++){ 
          json_data = jArray.getJSONObject(i); 
          int id = json_data.getInt("day"); 
          quest = json_data.getString("question");       
          TextView tv = (TextView) findViewById(R.id.textView1); 
          tv.setText(quest); 
          } 

          } 
          catch(JSONException e){ 
          Log.e("log_tag", "Error parsing data "+e.toString()); 
          } 
          } 
      } 

И это является файлом PHP:

<?php 
mysql_connect(...) or die ("Keine Verbindung"); 
mysql_select_db("...); 

$q=mysql_query("SELECT day,question FROM quest"); 
while($e=mysql_fetch_assoc($q)) 
$output[]=$e; 

print(json_encode($output)); 
mysql_close(); 
?> 

Я просмотрел столько потоков, но не могу найти ответ. У вас есть ответ?

Заранее спасибо и извините за мой английский (я ученик из Германии)

+1

Пожалуйста, разместите свой JSON. – SASM

ответ

0

Я не верю, что ваш result является JSON закодированные строки и, следовательно, ваша функция JSONArray не удается:

Проверить вне JSON строки requirements for your JSONArray function

должен выглядеть как this:

{"1": "1_data", "2": "2_data", "3": "3_data"} 

Возможно, вы можете просто добавить { в начало и } в конце result, и это, вероятно, сработает.