如何解析来自服务器的android中的多个Json数据

时间:2013-02-07 11:41:39

标签: android http-post json

* 我有疑问,是否有可能从android中的服务器解析多个json响应?现在我正在开发一个将android应用程序与cakephp网站连接起来的项目。我从服务器接收数据作为json编码格式。并解析android中的json数据并显示到视图部分。 但现在我想从服务器传递多个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();

           }

我想将这三个jso编码数据传递给android

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

当我尝试只将一个json数据传递给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();
                    }

                  }

我需要在我的android代码中添加什么来接收多个json数据??? 如果有人知道请回复.................

2 个答案:

答案 0 :(得分: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 :(得分: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($输出))