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

android解析php输出的json格式字符串实例
    在服务器端使用php从mysql数据库中查找数据出来,然后构造成json,等待客户端以get方式获取。

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

    android解析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":"赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束,恭喜参赛选手斩获佳绩。"}]}

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, '赛后,康永刚处长致闭幕辞,祝贺比赛圆满结束