解析新浪微博JSON
之前发过一篇开发新浪微博的文章,对于大家比较感兴趣的内容之一便是如何解析新浪微博的JSON。
其实一开始的时候,也遇过一些挫折,比如直接用JsonArray和JsonObject去解析JSON内容的话,是解析不了的。
因为JSON的格式比较固定,像新浪微博返回的JSON内容则是多了一个中括号及statues标签,如下:
{"statuses": [{"created_at": "Tue May 31 17:46:55 +0800 2011","id": 11488058246,"text": "求关注。","source": "<a href="http://weibo.com" 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": "http://blog.sina.com.cn/zaku","profile_image_url": "http://tp1.sinaimg.cn/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 2009","following": false,"allow_all_act_msg": false,"remark": "","geo_enabled": true,"verified": false,"allow_all_comment": true,"avatar_large": "http://tp1.sinaimg.cn/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解析了。
解析新浪微博JSON相关推荐
- 解析新浪微博JSON数据
解析新浪微博JSON数据 这里讲的是通过retrofit2请求方式得到的返回值 一.自己分析解析 默认通过responseBody 将得到的返回值 try { str=response.body(). ...
- android 解析新浪微博json数据
从新浪微博服务器获取到了好友微博的json数据后如何去解析着实让我费了一番功夫.因为返回的json数据格式比较复杂.下面我就通过代码说明一下如何来解析新浪微博的json数据.先来看一下从服务器端返回的 ...
- IDEA Java解析GeoJson.json文件
IDEA Java解析GeoJson.json文件 一.遇到的问题 1. 无法导入成功 2. org.geotools.StyleFactory is not an ImageIO SPI class ...
- Java解析SQL记录为JSON_Oracle解析复杂json的方法
问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...
- mormot解析天气预报JSON数据
mormot解析天气预报JSON数据 uses SynCommons; const json2 = '{' + #13#10 + '"error":0,' + #13#10 + ' ...
- excel 树结构json_写一个上传excel表格,解析成 json 的接口
IDE:IDEA 编程语言:JAVA controller 类 业务处理类 model 类 Controller import com.你的路径.ImportTaskExcel; import org ...
- oracle大对象实例_Oracle解析复杂json的方法实例详解
问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...
- android最大json,Android:解析大型JSON文件
我正在创建一个Android应用程序,该应用程序应该将Json从文件或网址解析为jsonarray和jsonobjects. 问题是,我的JSON是3.3 MB,当我使用一个简单的代码,如下所示:(现 ...
- python 多层嵌套 json_python解析多层json操作示例
本文实例讲述了python解析多层json操作.分享给大家供大家参考,具体如下: 原始文件内容: { "MaskPolygonItem": { "0": { & ...
最新文章
- 内存淘汰算法_「承」Redis 原理篇——Redis 的内存回收机制
- Android vector标签 PathData 画图超详解
- oracle 相同的sql执行两次 执行计划会不一样吗,一条SQL语句,两次执行计划的差距...
- Windows四大傻X功能——那些拖慢系统性能的罪魁祸首
- OCM备考 三. Managing Database Availability 之RMAN日常操作
- 移动网页如何实现发送短信和拨打电话的功能
- Ocelot简易教程(三)之主要特性及路由详解
- 今天的不一会儿的飞鸽传书
- 新学期,对同学们的要求和期望
- tomcat事件处理机制
- PXE远程CentOS安装anaconda报错
- 基于 Direct3D 电子海图区域绘制方法
- 用微信小程序发红包的两种方法
- python飞机大战爆炸效果实现_python飞机大战添加爆炸效果
- ngx.var与ngx.ctx的区别
- Java Annotation 应用 -- 导出Excel表格
- 仿企查查、天眼查 d3关联关系图 力项导图
- iOS weak和assign修饰OC对象的区别
- JQ手册 JQ方法大全 jq获取表单值与赋值代码 50个JQ的例子
- C语言编程集合A和B的交集,求两个递增链表A和B的交集,并将结果放在链表A中
热门文章
- 在Linux上配置DRBD部署
- 90句美丽的英文及翻译
- FICO与MM的集成概述
- linux重装出现cannot load file 5555h,在安装系统出现error cannot load file code 5555h 的解决办法...
- 信息系统项目管理师 第七章-项目成本管理
- 【C语言】a+aa+aaa+...+aa...a=?
- 时空位置大数据AI平台技术实现架构设计
- python的价值观_朴素的DevOps价值观
- 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
- DC入门(一)综合基础