之前发过一篇开发新浪微博的文章,对于大家比较感兴趣的内容之一便是如何解析新浪微博的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相关推荐

  1. 解析新浪微博JSON数据

    解析新浪微博JSON数据 这里讲的是通过retrofit2请求方式得到的返回值 一.自己分析解析 默认通过responseBody 将得到的返回值 try { str=response.body(). ...

  2. android 解析新浪微博json数据

    从新浪微博服务器获取到了好友微博的json数据后如何去解析着实让我费了一番功夫.因为返回的json数据格式比较复杂.下面我就通过代码说明一下如何来解析新浪微博的json数据.先来看一下从服务器端返回的 ...

  3. IDEA Java解析GeoJson.json文件

    IDEA Java解析GeoJson.json文件 一.遇到的问题 1. 无法导入成功 2. org.geotools.StyleFactory is not an ImageIO SPI class ...

  4. Java解析SQL记录为JSON_Oracle解析复杂json的方法

    问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...

  5. mormot解析天气预报JSON数据

    mormot解析天气预报JSON数据 uses SynCommons; const json2 = '{' + #13#10 + '"error":0,' + #13#10 + ' ...

  6. excel 树结构json_写一个上传excel表格,解析成 json 的接口

    IDE:IDEA 编程语言:JAVA controller 类 业务处理类 model 类 Controller import com.你的路径.ImportTaskExcel; import org ...

  7. oracle大对象实例_Oracle解析复杂json的方法实例详解

    问题背景: 当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析.如此 ...

  8. android最大json,Android:解析大型JSON文件

    我正在创建一个Android应用程序,该应用程序应该将Json从文件或网址解析为jsonarray和jsonobjects. 问题是,我的JSON是3.3 MB,当我使用一个简单的代码,如下所示:(现 ...

  9. python 多层嵌套 json_python解析多层json操作示例

    本文实例讲述了python解析多层json操作.分享给大家供大家参考,具体如下: 原始文件内容: { "MaskPolygonItem": { "0": { & ...

最新文章

  1. 内存淘汰算法_「承」Redis 原理篇——Redis 的内存回收机制
  2. Android vector标签 PathData 画图超详解
  3. oracle 相同的sql执行两次 执行计划会不一样吗,一条SQL语句,两次执行计划的差距...
  4. Windows四大傻X功能——那些拖慢系统性能的罪魁祸首
  5. OCM备考 三. Managing Database Availability 之RMAN日常操作
  6. 移动网页如何实现发送短信和拨打电话的功能
  7. Ocelot简易教程(三)之主要特性及路由详解
  8. 今天的不一会儿的飞鸽传书
  9. 新学期,对同学们的要求和期望
  10. tomcat事件处理机制
  11. PXE远程CentOS安装anaconda报错
  12. 基于 Direct3D 电子海图区域绘制方法
  13. 用微信小程序发红包的两种方法
  14. python飞机大战爆炸效果实现_python飞机大战添加爆炸效果
  15. ngx.var与ngx.ctx的区别
  16. Java Annotation 应用 -- 导出Excel表格
  17. 仿企查查、天眼查 d3关联关系图 力项导图
  18. iOS weak和assign修饰OC对象的区别
  19. JQ手册 JQ方法大全 jq获取表单值与赋值代码 50个JQ的例子
  20. C语言编程集合A和B的交集,求两个递增链表A和B的交集,并将结果放在链表A中

热门文章

  1. 在Linux上配置DRBD部署
  2. 90句美丽的英文及翻译
  3. FICO与MM的集成概述
  4. linux重装出现cannot load file 5555h,在安装系统出现error cannot load file code 5555h 的解决办法...
  5. 信息系统项目管理师 第七章-项目成本管理
  6. 【C语言】a+aa+aaa+...+aa...a=?
  7. 时空位置大数据AI平台技术实现架构设计
  8. python的价值观_朴素的DevOps价值观
  9. 经典问题的另类解法——以信息学奥赛一本通c++版1216红与黑为例
  10. DC入门(一)综合基础