1

*私は疑いを持っています.Androidでサーバーからの複数のjson応答を解析することは可能ですか? 現在、Android アプリケーションを Cakephp Web サイトに接続するプロジェクトに取り組んでいます。サーバーからデータを 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();

           }

これら3つのjsoでエンコードされたデータをAndroidに渡したい

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

jsonデータを1つだけAndroidに渡そうとすると、正しく取得されます私の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();
                    }

                  }

複数のjsonデータを受信するには、Androidコードに何を追加する必要がありますか??? 知ってる人いたら回答お願いします........

4

2 に答える 2

2
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で3つの異なる配列をエンコードしています。それらをすべて1つの配列にまとめてから、その単一の配列をエンコードします

于 2013-02-07T11:51:34.077 に答える
1
while($row=mysql_fetch_assoc($sql))
{   
  $output[$i]['id'] = $row['$driverDetails'];
  $output[$i]['name'] = $row['$vechicleDetails'];



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



  $i++;
}

print(json_encode($output))

于 2013-02-07T12:12:15.673 に答える