2013-02-07 114 views
0

* 我有疑問,是否有可能從android中的服務器解析多個json響應?現在我正在開發一個連接android應用程序和cakephp網站的項目。我從服務器接收數據作爲json編碼格式。並在android中解析該json數據並顯示到視圖部分。 但現在我想從服務器傳遞多個json響應,怎麼可能? *如何解析來自服務器的Android中的多個Json數據

function commuterJson() 
    { 
    $upid=$_POST['upid']; 
    $ampm=$_POST['ampm']; 
     $this->loadModel('Userprofile'); 
    $this->Userprofile->recursive = -1; 
    $ups = $this->Userprofile->find('first', array('conditions' => 
    array('id' => $upid, 'status' => 'active'))); 
    $todaysdata = $this->Requestcard->getRequestcardDataampm($upid, $ampm, $today); 

    $driverId=$todaysdata[0]['Requestcard']['driver_id']; 
    $vacencyId=$todaysdata[0]['Requestcard']['vacancycard_id']; 
    $driverDetails = $this->Userprofile->find('first', array('conditions' => 
    array('id' => $driverId, 'status' => 'active'))); 
    $vacancyDetails = $this->Vacancycard->find('first', 
    array('conditions' => array('id' =>$vacencyId))); 
    $vechicleId=$vacancyDetails['Vacancycard']['vehicledetail_id']; 
    $vechicleDetails=$this->Vehicledetail->find('first', 
    array('conditions' => array('id' => $vechicleId))); 

    echo json_encode($driverDetails); 
    echo json_encode($vechicleDetails); 
    echo json_encode($todaysdata); 
    exit(); 

      } 

我想,當我嘗試只有一個JSON數據傳遞到Android這三個JSO編碼的數據傳遞到Android

echo json_encode($driverDetails); 
    echo json_encode($vechicleDetails); 
    echo json_encode($todaysdata); 

,它是正確越來越 我的Android代碼是

   public void getData(View v) 
        { 
       HttpClient client = new DefaultHttpClient(); 
       HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); 
       HttpResponse response; 

     try{ 
      HttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = 
         new HttpPost("http://10.0.2.2/Mebuddie/logins/login1"); 

       httppost.setEntity 
          (new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 
       response = httpclient.execute(httppost); 
       StringBuilder builder = new StringBuilder(); 
      BufferedReader reader = new BufferedReader 
      (new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 
       for (String line = null; (line = reader.readLine()) != null;) 
         { 
        builder.append(line).append("\n"); 
         } 
      JSONTokener tokener = new JSONTokener(builder.toString()); 
      JSONArray finalResult = new JSONArray(tokener); 
      Object type = new Object(); 
     if (finalResult.length() == 0 && type.equals("both")) 
      { 
      System.out.println("null value in the json array"); 

        } 
     else { 
       JSONObject json_data = new JSONObject(); 
         for (int i = 0; i < finalResult.length(); i++) 
         { 
        json_data = finalResult.getJSONObject(i); 
        JSONObject menuObject = json_data.getJSONObject("Userprofile"); 

          group_id= menuObject.getString("group_id"); 
          id = menuObject.getString("id"); 


        } 
     catch (Exception e) { 
       Toast.makeText(FirstMain.this, 
       "please enter a valid id or pswd",Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 
        } 

        } 

我需要在我的android代碼中添加接收多個json數據? 如果有人知道請回復.................

+0

只是覺得......使它象:'{ 「driverDetails」:$ driverDetails, 「vechicleDetails」:$ vechicleDetails, 「todaysdata」:$ todaysdata}'或者像這樣不喜歡 – Selvin

+0

嗨Selvin ...那是一個很有創意的想法..... Iam試圖這樣想.. –

回答

1
public void getData(View v) 
{ 
    // TODO Auto-generated method stub 
    try{ 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://yourpagename"); 
     HttpResponse response = httpclient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     is = entity.getContent(); 
     }catch(Exception e){ 
     Log.e("log_tag", "Error in http connection"+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()); 
    } 
    return null; 
} 
protected void onPostExecute(Void v) { 
    try{ 
     JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++) 
     { 
      JSONObject json_data = jArray.getJSONObject(i); 
      String id=json_data.getString("id"); 
      String name=json_data.getString("name"); 
     } 
    } 
    catch(JSONException e){ 
     Log.e("log_tag", "Error parsing data "+e.toString()); 
    } 
} 

而在PHP端你在json.Put他們都聚集在一個編碼3個不同的排列數組,然後編碼單個陣列

+0

這是什麼?沒有答案......你不明白他的問題 – Selvin

+0

這是一個答案,我告訴他使用這個簡單的代碼,而不是他的困難的代碼,我認爲你沒有看到我的最後一行看到它睜開眼睛「並在PHP一側你在json中編碼3個不同的數組,然後編碼這個單個數組「這是答案 –

+0

我得到了解決方案,在我的php代碼中,我將這些數據賦予了單個json arry $ combain =陣列($ vechicleDetails + $ driverDetails + $ todaysdata); ..........................感謝薩馬爾先生,並再次感謝塞爾文......感謝您的大力支持 –

1
while($row=mysql_fetch_assoc($sql)) 
{ 
    $output[$i]['id'] = $row['$driverDetails']; 
    $output[$i]['name'] = $row['$vechicleDetails']; 



    $output[$i]['image']=$row['$todaysdata']; 



    $i++; 
} 

打印(json_encode($輸出))

相關問題