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

来源:互联网 发布:打击电信网络诈骗 编辑:程序博客网 时间:2024/06/06 02:05

原文地址: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.     }  

数据库代码如下:

CREATETABLEIF NOTEXISTS `p_news` (
  `nid`int(11)NOTNULLAUTO_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, '赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束
0 0
原创粉丝点击