600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 解析新浪微博JSON

解析新浪微博JSON

时间:2021-03-30 15:09:54

相关推荐

解析新浪微博JSON

之前发过一篇开发新浪微博的文章,对于大家比较感兴趣的内容之一便是如何解析新浪微博的JSON。

其实一开始的时候,也遇过一些挫折,比如直接用JsonArray和JsonObject去解析JSON内容的话,是解析不了的。

因为JSON的格式比较固定,像新浪微博返回的JSON内容则是多了一个中括号及statues标签,如下:

{"statuses": [{"created_at": "Tue May 31 17:46:55 +0800 ","id": 11488058246,"text": "求关注。","source": "<a href="" rel="nofollow">新浪微博</a>","favorited": false,"truncated": false,"in_reply_to_status_id": "","in_reply_to_user_id": "","in_reply_to_screen_name": "","geo": null,"mid": "5612814510546515491","reposts_count": 8,"comments_count": 9,"annotations": [],"user": {"id": 1404376560,"screen_name": "zaku","name": "zaku","province": "11","city": "5","location": "北京 朝阳区","description": "人生五十年,乃如梦如幻;有生斯有死,壮士复何憾。","url": "/zaku","profile_image_url": "/1404376560/50/0/1","domain": "zaku","gender": "m","followers_count": 1204,"friends_count": 447,"statuses_count": 2908,"favourites_count": 0,"created_at": "Fri Aug 28 00:00:00 +0800 ","following": false,"allow_all_act_msg": false,"remark": "","geo_enabled": true,"verified": false,"allow_all_comment": true,"avatar_large": "/1404376560/180/0/1","verified_reason": "","follow_me": false,"online_status": 0,"bi_followers_count": 215}},... ],"previous_cursor": 0,// 暂未支持"next_cursor": 11488013766,// 暂未支持"total_number": 81655}

我的目标就是先去掉以上红色字体的内容,这个比较容易实现。

//将获取到的json内容变成可以正常解析的文本public static String parseJsonText(String jtext){char leftSymbol='[';char rightSymbol=']';String result="";for(int i=0;i<jtext.length();i++){if(leftSymbol==jtext.charAt(i)){result=jtext.substring(i,jtext.length());break;}}for(int i=result.length();i>0;i--){if(rightSymbol==result.charAt(i-1)){result=result.substring(0, i);break;}}return result;}

处理完就可以直接用JsonArray和JsonObject来解析相关的内容了。

第二步就是实现一个List<HashMap<String,String>>,用于填充ListView。

下面的方法返回一个List<HashMap<String,String>>,并在其中解析JSON内容。

private List<HashMap<String, String>> listview(String rlt) {String result = ParseJson.parseJsonText(rlt);try {JSONArray jsonArrays = new JSONArray(result);for (int i = 0; i < jsonArrays.length(); i++) {JSONObject jsonObject = jsonArrays.getJSONObject(i);HashMap<String, String> map = new HashMap<String, String>();// 获得微博的IDString ID = jsonObject.getString("id");contentId.add(ID);// 获得微博内容String text = jsonObject.getString("text");// 获得微博来源String source = jsonObject.getString("source");// 获得微博的发表时间String created_at = jsonObject.getString("created_at");// 生成user的可用JSON对象JSONObject userJson = jsonObject.getJSONObject("user");// 获得发表微博的用户名String username = userJson.getString("name");map.put("text", text);map.put("name", username);map.put("source", "来自" + "【" + source + "】");map.put("created_at", ParseJson.getFormatTime(created_at));if (jsonObject.has("retweeted_status")) {JSONObject retweetedJson = jsonObject.getJSONObject("retweeted_status");// 获得转发微博的内容String retweetedText = retweetedJson.getString("text");map.put("retweetedText", retweetedText);JSONObject retWeetedUserNameJson = retweetedJson.getJSONObject("user");// 获得转发微博内容的用户名String retweetedContent = retWeetedUserNameJson.getString("name");map.put("retweetedContent", retweetedContent + ":"+ retweetedText);}listArrays.add(map);}} catch (JSONException e) {// TODO Auto-generated catch blockSystem.out.println(e.getMessage());}return listArrays;}

通过上面两步就可以实现基本的微博JSON解析了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。