mqzlp 发表于 2015-8-25 09:02:31

php android json

//android
public class GoWinHttp {
    //通过post获得数据
    public static String postHttpData(String url,List<NameValuePair> nameValuePairs)
    {
      String resultStr=null;
      HttpClient httpclient = new DefaultHttpClient();
      HttpPost httppost = new HttpPost(url);
         try {
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                HttpResponse response;
                response=httpclient.execute(httppost);   
                resultStr=EntityUtils.toString(response.getEntity());
            } catch (UnsupportedEncodingException e) {
                Log.d(url, "UnsupportedEncodingException");
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                Log.d(url, "ClientProtocolException");
                e.printStackTrace();
            } catch (IOException e) {
                Log.d(url, "IOException");
                e.printStackTrace();
            }
            return resultStr;
    }
}


List<NameValuePair> nameValuePairs构建这是,post给php的参数
nameValuePairs.add(new BasicNameValuePair("key","value"));
  //解析方法,主要是,这里有一点特殊,就是开始第一个json对象是jsonObject 和JSONArray 有一点不同,jsonObject 是指json最开始以{开始的,而以[开始的是JSONArray ,没仔细研究,这里他们都是字符串



//解析JSON数据
    public static List<Map<String,String>>resolveData(String jsonStr)
    {
      List<Map<String,String>>ls=new ArrayList<Map<String,String>>();
      Map<String,String> data;
      JSONObject jsonObject;
      JSONArray jsonArr;
      JSONArray nameArr;
      try {
            jsonArr=new JSONArray(jsonStr);
            for(int i=0;i<jsonArr.length();i++)
            {
                jsonObject=jsonArr.getJSONObject(i);
                nameArr=jsonObject.names();
                data=new HashMap<String,String>();
                String name;
                for(int j=0;j<nameArr.length();j++)
                {
                  name=nameArr.getString(j);
                  data.put(name, jsonObject.getString(name));
                }
                ls.add(data);               
            }
      } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
      }
      return ls;      
    }
  
//php上面不管以任何方式得到一个数组,然后将数组编码成为json格式
  //这里有一个方法可以将一整张表转换为数组



<?php
//获取一张表的所有数据
function getTabDatas($tabName,$link){
if($tabName=="")
    {
      exit;
    }
    $sqlStr='SELECT * FROM '.$tabName;   
    $result = mysql_query($sqlStr, $link);
    if (!$result) {
      exit;   
    }   
    $fields= array();
   for ($i=0; $i<mysql_num_fields($result); $i++)
    {   
   $fields[] =mysql_field_name($result, $i);      
    }   
    $arr=array();
    while ($row = mysql_fetch_assoc($result)) {
    $once=array();
      foreach ($fields as $value)
      {
         $once[$value]=$row[$value];         
      }
    $arr[]=$once;   
    }   
    mysql_free_result($result);   
    closeSqlconn();
    return $arr;
}
?>
  //然后php只需要将得到的数组格式化为json就行了



$json_string = json_encode($resArr);
echo $json_string;
  



//超时请求
      httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
      //读取超时
      httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
  
页: [1]
查看完整版本: php android json