android解析php输出的json格式字符串实例
原文地址:http://blog.csdn.net/liwei3gjob/article/details/7999702
在服务器端使用php从mysql数据库中查找数据出来,然后构造成json,等待客户端以get方式获取。
本例子基本在上次的例子上面进行。图片效果如下:
访问页面的json数据为:
[java] view plaincopy{“value”:[{"nid":"1","title":"迎新","keyword":"迎新","date_time":"1309791386","content":"某某学院将于XX年XX月XX日XX点于XX地举办XX届迎新晚会! "},{"nid":"2","title":"南岭校区艺术活动中心","keyword":"南岭,艺术","date_time":"1309791498","content":"赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束,恭喜参赛选手斩获佳绩。"}]}
- index.php代码
- <?php
- header("Content-Type: text/html; charset=UTF-8");
- $type = $_GET["type"];
- if($type == 1)
- {
- //$obj->title = "Test";
- //$obj->id = 1;
- //$obj->value = urlencode("TTT");
- //echo urldecode ( json_encode ($obj));
- $array = array( "title"=>"TTT", "id"=>1, "value"=>urlencode("测试"));
- echo urldecode(json_encode($array));
- }
- else
- {
- $con = mysql_connect ( "localhost", "root", "windows" );
- if (!$con)
- {
- die ( "Could not connect: " . mysql_error () );
- }
- mysql_select_db ( "dg", $con );
- mysql_query ( "set names utf8" );
- $query = "select * from p_news";
- $result = mysql_query ( $query );
- while ( $row = mysql_fetch_assoc ( $result ) )
- {
- $response [] = $row;
- }
- foreach ( $response as $key => $value )
- {
- $newData[$key] = $value;
- $newData [$key] ["title"] = urlencode ( $value ["title"] );
- $newData [$key] ["keyword"] = urlencode ( $value ["keyword"] );
- $newData [$key] ["content"] = urlencode ( $value ["content"] );
- }
- echo urldecode ( json_encode ( array("value"=>$newData) ));
- mysql_free_result($result);
- mysql_close ( $con );
- }
- ?>
- Android中Java代码如下:
- public void getServerJsonDataWithType(String url,EditText editText)
- {
- int res = 0;
- HttpClient client = new DefaultHttpClient();
- StringBuilder str = new StringBuilder();
- HttpGet httpGet = new HttpGet(url);
- BufferedReader buffer = null;
- try
- {
- HttpResponse httpRes = client.execute(httpGet);
- httpRes = client.execute(httpGet);
- res = httpRes.getStatusLine().getStatusCode();
- if(res == 200)
- {
- buffer = new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent(),Charset.forName("UTF-8")));
- for(String s = buffer.readLine(); s != null ; s = buffer.readLine())
- {
- str.append(s);
- }
- Log.i(Tag,str.toString());
- buffer.close();
- JSONArray json = new JSONObject(str.toString()).getJSONArray("value");
- String strs = "";
- for(int i=0;i<json.length();i++)
- {
- JSONObject jsonObject = (JSONObject)json.opt(i);
- strs += jsonObject.getString("content");
- }
- //String title = json.getString("title");
- //int id = json.getInt("id");
- //String value = json.getString("value");
- editText.setText(strs);
- }
- else
- {
- Log.i(Tag, "HttpGet Error");
- }
- }
- catch(Exception e)
- {
- Log.i(Tag, "Exception");
- if(buffer != null)
- {
- try {
- buffer.close();
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- }
- }
数据库代码如下:
CREATE TABLE
IF NOT EXISTS
`p_news` (
`nid` int (11) NOT NULL
AUTO_INCREMENT,
`title` varchar (50) NOT NULL ,
`keyword` varchar (25) NOT NULL ,
`date_time` int (10) NOT NULL ,
`content`
text NOT NULL ,
PRIMARY KEY
(`nid`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8
AUTO_INCREMENT=5 ;
--
--
Dumping data for table `p_news`
--
INSERT INTO
`p_news` (`nid`, `title`, `keyword`, `date_time`, `content`) VALUES
(1, "迎新" , "迎新" ,
1309791386, "某某学院将于XX年XX月XX日XX点于XX地举办XX届迎新晚会!
" ),
(2, "南岭校区艺术活动中心" , "南岭,艺术" ,
1309791498, "赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束
|
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。