2016-09-09 5 views
0

У меня есть служба php на моем сервере, которая возвращает JSON Array, теперь я пытаюсь подключить это приложение для Android.Android JSON возвращает JSON Array

Использование кода сильфона не возвращает значения:

private class getJson extends AsyncTask<String, Void, Void> { 
    TextView t; 
    String title; 
    @Override 
    protected void onPreExecute() { 
     // NOTE: You can call UI Element here. 
     t = (TextView) findViewById(R.id.test); 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(String... urls) { 
     try{ 
      HttpClient hc = new DefaultHttpClient(); 
      HttpPost hp = new HttpPost("http://www.test.com/test.php"); 
      ArrayList<NameValuePair> ar = new ArrayList<NameValuePair>(); 
      ar.add(new BasicNameValuePair("uni","1")); 
      ar.add(new BasicNameValuePair("num","10")); 
      ar.add(new BasicNameValuePair("format","json")); 

      hp.setEntity(new UrlEncodedFormEntity(ar)); 
      HttpResponse hr = hc.execute(hp); 

      InputStream is = hr.getEntity().getContent(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      StringBuilder sb = new StringBuilder(); 
      String line; 
      while((line = br.readLine()) != null){ 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      String result = sb.toString(); 


      JSONArray ja = new JSONArray(result); 
      for(int i = 0; i<ja.length(); i++){ 
       JSONObject jo = ja.getJSONObject(i); 
       title = jo.getString("title"); 
      } 
     }catch(Exception e){ 

     } 
     return null; 
    } 
    @Override 
    protected void onPostExecute(Void unused) { 
     t.setText(title); 
    } 
} 

код делает дозвонился, потому что я поместил в некоторых командной строке гравюрах, чтобы проверить это идет в методы. PHP-скрипт также возвращает массив, как я проверял его в браузере.

Я делаю что-то неправильно здесь? Это мой первый раз, когда я пытаюсь связать сервер, так что я как бы вздрагиваю в темноте с разными учебниками, поэтому я, вероятно, пропустил что-то большое.

Пример результата JSON из браузера:

{"reviews":[{"reviews":{"title":"test review","col_score":"5","col_ad":"test","night_score":"3","night_ad":"test","su_score":"4","su_ad":"test","lec_score":"5","lec_ad":"test","accom_score":"2","accom_ad":"test","sport_score":"4","sport_ad":"test","fac_score":"5","fac_ad":"test","soci_score":"4","soci_ad":"test","add_comments":"test","overall":"9"}}]} 

ответ

3

Вы инициированный пустой JSONArray

JSONArray ja = new JSONArray(); 

изменить его

JSONArray ja = new JSONArray(result); 

EDIT - Глядя на ваш json вы следует разобрать его следующим образом

JSONObject jsonObject = new JSONObject(result); 
JSONArray jsonArray = jsonObject.getJSONArray("reviews"); 

for(int i = 0; i<jsonArray.length(); i++){ 
    JSONObject jo = jsonArray.getJSONObject(i); 
    JSONObject jsonObject1 = jo.getJSONObject("reviews") 
    title = jsonObject1.getString("title"); 
} 
+0

Он по-прежнему не возвращает ничего, к сожалению – Saml92

+0

не похоже, пытался печатать переменный заголовок и он возвращается в нуле. – Saml92

+0

Нет результата тоже – Saml92

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