牛骨文教育服务平台(让学习变的简单)
博文笔记

android解析php输出的json格式字符串实例

创建时间:2014-09-09 投稿人: 浏览次数:847

原文地址:http://blog.csdn.net/liwei3gjob/article/details/7999702


在服务器端使用php从mysql数据库中查找数据出来,然后构造成json,等待客户端以get方式获取。

本例子基本在上次的例子上面进行。图片效果如下:

    Android中使用HttpGet方式获取服务器端PHP Json返回数据

访问页面的json数据为:

{“value”:[{"nid":"1","title":"迎新","keyword":"迎新","date_time":"1309791386","content":"某某学院将于XX年XX月XX日XX点于XX地举办XX届迎新晚会! "},{"nid":"2","title":"南岭校区艺术活动中心","keyword":"南岭,艺术","date_time":"1309791498","content":"赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束,恭喜参赛选手斩获佳绩。"}]}

[java] view plaincopy
  1. index.php代码  
  2.   
  3. <?php  
  4.     header("Content-Type: text/html; charset=UTF-8");  
  5.     $type = $_GET["type"];  
  6.     if($type == 1)  
  7.     {  
  8.         //$obj->title = "Test";  
  9.         //$obj->id = 1;  
  10.         //$obj->value = urlencode("TTT");  
  11.         //echo urldecode ( json_encode ($obj));  
  12.         $array = array( "title"=>"TTT", "id"=>1, "value"=>urlencode("测试"));  
  13.         echo urldecode(json_encode($array));  
  14.     }  
  15.     else  
  16.     {  
  17.         $con = mysql_connect ( "localhost", "root", "windows" );  
  18.         if (!$con)  
  19.         {  
  20.             die ( "Could not connect: " . mysql_error () );  
  21.         }  
  22.         mysql_select_db ( "dg", $con );  
  23.         mysql_query ( "set names utf8" );  
  24.         $query = "select * from p_news";  
  25.         $result = mysql_query ( $query );  
  26.         while ( $row = mysql_fetch_assoc ( $result ) )  
  27.         {  
  28.             $response [] = $row;  
  29.         }  
  30.         foreach ( $response as $key => $value )  
  31.         {  
  32.             $newData[$key] = $value;  
  33.             $newData [$key] ["title"] = urlencode ( $value ["title"] );  
  34.             $newData [$key] ["keyword"] = urlencode ( $value ["keyword"] );  
  35.             $newData [$key] ["content"] = urlencode ( $value ["content"] );  
  36.         }  
  37.         echo urldecode ( json_encode ( array("value"=>$newData) ));  
  38.                   mysql_free_result($result);  
  39.         mysql_close ( $con );  
  40.     }  
  41. ?>  
  42. Android中Java代码如下:  
  43.   
  44. public void getServerJsonDataWithType(String url,EditText editText)  
  45.     {  
  46.         int res = 0;  
  47.         HttpClient client = new DefaultHttpClient();  
  48.         StringBuilder str = new StringBuilder();  
  49.         HttpGet httpGet = new HttpGet(url);  
  50.         BufferedReader buffer = null;  
  51.         try  
  52.         {  
  53.             HttpResponse httpRes = client.execute(httpGet);  
  54.             httpRes = client.execute(httpGet);  
  55.             res = httpRes.getStatusLine().getStatusCode();  
  56.             if(res == 200)  
  57.             {  
  58.                 buffer = new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent(),Charset.forName("UTF-8")));  
  59.                 for(String s = buffer.readLine(); s != null ; s = buffer.readLine())  
  60.                 {  
  61.                     str.append(s);  
  62.                 }  
  63.                 Log.i(Tag,str.toString());  
  64.                 buffer.close();  
  65.                 JSONArray json = new JSONObject(str.toString()).getJSONArray("value");  
  66.                 String strs = "";  
  67.                 for(int i=0;i<json.length();i++)  
  68.                 {  
  69.                     JSONObject jsonObject = (JSONObject)json.opt(i);  
  70.                     strs += jsonObject.getString("content");  
  71.                 }  
  72.                 //String title = json.getString("title");  
  73.                 //int id = json.getInt("id");  
  74.                 //String value = json.getString("value");  
  75.                 editText.setText(strs);  
  76.             }  
  77.             else  
  78.             {  
  79.                 Log.i(Tag, "HttpGet Error");  
  80.             }  
  81.         }  
  82.         catch(Exception e)  
  83.         {  
  84.             Log.i(Tag, "Exception");  
  85.             if(buffer != null)  
  86.             {  
  87.                 try {  
  88.                     buffer.close();  
  89.                 } catch (IOException e1) {  
  90.                     // TODO Auto-generated catch block  
  91.                     e1.printStackTrace();  
  92.                 }  
  93.             }  
  94.         }  
  95.     }  

数据库代码如下:

CREATETABLE IF NOTEXISTS `p_news` (   `nid`int(11)NOTNULL AUTO_INCREMENT,   `title`varchar(50)NOTNULL,   `keyword`varchar(25)NOTNULL,   `date_time`int(10)NOTNULL,   `content` text NOTNULL,   PRIMARYKEY (`nid`) ) ENGINE=MyISAM  DEFAULTCHARSET=utf8 AUTO_INCREMENT=5 ;   -- -- Dumping data for table `p_news` --   INSERTINTO `p_news` (`nid`, `title`, `keyword`, `date_time`, `content`) VALUES (1,"迎新","迎新", 1309791386, "某某学院将于XX年XX月XX日XX点于XX地举办XX届迎新晚会! "), (2,"南岭校区艺术活动中心","南岭,艺术", 1309791498, "赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。