Google于2007年11月5日推出基于Linux平台的开源手机操作系统,即Android。同时发布android软件开发工具包SDK(2.0版已发布),便于手机应用程序开发者进行基于android的手机应用程序开发。
下面代码是根据zuosa提供的API,希望开发出基于android平台上的zuosa客户端,路漫漫其修远兮。程序主要是对api返回数据的处理,这里是json格式数据。对于JAVA,有很多第三方的程序包可以很方便的处理json数据。其实在android SDK中同样提供了json数据处理方法,只不过可能会稍显的有些复杂。
public String process() { String myString=""; try{
//获取指定id为34230762的消息
URL url = new URL("http://api.zuosa.com/statuses/show.json?id=34230762");
//使用HttpURLConnection类建立连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.connect();
StringBuffer totalXML = new StringBuffer("");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream httpStream = conn.getInputStream();
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(httpStream));
String currLine = "";
while((currLine=bufferReader.readLine())!=null)
totalXML.append(currLine);
}
myString=totalXML.toString();
//关闭连接
conn.disconnect();
//myString为String格式,需要先转换为JSONObject便于处理
JSONObject jsonObject=new JSONObject(myString);
myString="";
//keys方法:返回json格式数据中的所有key
Iterator l=jsonObject.keys();
//readjson读取对应key的值,即zuosa消息内容
myString=readjson(l, jsonObject);
} catch (JSONException e) {
myString=e.getMessage();
} catch(Exception ee) {
myString=ee.getMessage();
}
return myString;
}
public String readjson(Iterator l, JSONObject jsonObject) { String myString=""; Iterator templ=null; try {
//遍历整个json数据
for (; l.hasNext(); ) {
String ll=(String)l.next();
//因为在zuosa返回的json数据是多维,这里先判断对应key的值是否是json格式数据
JSONObject tempJson=jsonObject.optJSONObject(ll);
//如果对应key的值不存在或者不是一个jsonobject,则返回null
if (tempJson!=null) {
templ=tempJson.keys();
//这里应该可以使用递归,可一直不成功
myString+=readjson2(templ, tempJson);
} else {
//格式化时间,按年月日 时分秒 形式显示
if (ll.equals("created_at")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
Date date=new Date();
//以key:value显示数据 myString+=ll+":"+sdf.format(date);
}else myString+=ll+":"+jsonObject.getString(ll); } } }catch (JSONException e) { myString=e.getMessage(); } catch(Exception ee) { myString=ee.getMessage(); } return myString; }
//readjson2跟上面的readjson基本一样。 public String readjson2(Iterator l, JSONObject jsonObject) { String myString=""; Iterator templ=null; try { for (; l.hasNext(); ) { String ll=(String)l.next(); myString+=ll+":"+jsonObject.getString(ll); } }catch (JSONException e) { myString=e.getMessage(); } catch(Exception ee) { myString=ee.getMessage(); } return myString; }
模拟器上执行结果:

至于在layout中如何布局,就是另外的活儿了。本程序是用的android sdk 1.6

hellong wrote:
换阵地了?
Link | 2009-11-08 at 16:13
cooiky wrote:
测试下评论恢复,邮件通知。
以后就用这个了
Link | 2009-11-11 at 14:17
chaoGeegle wrote:
你好,我请教您个问题:我在网站得到了一个JSON,格式是[{"nickname":"XXX","uri":"....."},{"nickname":"YYY","uri":"....."},{"nickname":"ZZZ","uri":"....."}]这种形式,我想获取nickname的列表,怎么把它解析成一条一条的?还请指教,谢谢
Link | 2010-03-13 at 20:15
半醒 wrote:
这个也是看用哪个语言吧
像PHP,有函数可以直接处理JSON格式的数据
JAVA的话,就不是很清楚了
Link | 2010-03-13 at 22:21
chaoGeegle wrote:
就是Android语言
Link | 2010-03-13 at 23:21
webryan wrote:
随便用一个java的json小库就可以,比如json-simple小的。
Link | 2010-03-22 at 18:32
好玩吗 wrote:
好好的一个博客,整的挺另类。
Link | 2010-04-16 at 21:59
好玩吗 wrote:
哈哈 我也期待呢 博客界的奇葩啊
Link | 2010-04-16 at 21:59