解析新浪微博JSON数据

这里讲的是通过retrofit2请求方式得到的返回值

一、自己分析解析
默认通过responseBody
将得到的返回值

try {
str=response.body().string();   // 要用string() 不是tostring 这样才是JSONSstring格式,否则传递不了给JSONString
} catch (IOException e) {
e.printStackTrace();
}

返回的JSON层次结构可以参考官方API:
http://open.weibo.com/wiki/2/statuses/home_timeline

开始解析
根据项目需要,这里只解析了: (需要其他的根据不同层次按下面的来就好了)
微博主的图片 profile_image_url
微博主名 user里的 screen_name
发布时间 created_at
来源 client_mblogid
文字内容 text
图片内容(缩略图) pic_urls数组里的(thumbnail_pic)
图片内容(中图) bmiddle_pic(但是好像只给一张)
图片内容(原图) original_pic (但是好像只给一张)
转发数 reposts_count
评论数 comments_count
点赞数 attitudes_count
转发字段: retweeted_status
转发字段中的内容: text
转发字段中的图片: pic_urls
其实转发字段和发布的信息是一样的参数,只是转发字段是在发布的信息中的一个字字段


这里的图片内容用二维数组
因为方便去适配RecyclerView

//开始解析try {// 将返回的JSONString格式赋予JSONObjectJSONObject jsonObject = new JSONObject(str);// 第一层为statuses 并且statuses为数组形式 因此将其设置为JSONArray形式JSONArray statusesArr = jsonObject.getJSONArray("statuses");// 循环地去获得多条微博// 这里的index+1代表的是第n条status(微博),因此index=0 为第一条 以此类推for (int i = 0; i < COUNT; i++) {// 第一条 下标从0开始JSONObject statusesObj = statusesArr.getJSONObject(i);// statuses中的第一层,即总的第二层// 该条微博的创建时间created_at[i] = statusesObj.getString("created_at");Log.i("created_at", created_at[i]);//该条微博的来源mSource[i] = statusesObj.getString("source");int firstIndex=mSource[i].indexOf(">");int lastIndex=mSource[i].lastIndexOf("<");if(firstIndex!=-1&&lastIndex!=-1) {    // 新浪微博这里的来源可能为空 因此要加这个判断source[i] = mSource[i].substring(firstIndex + 1, lastIndex);Log.i("source", source[i]);}else{source[i] = "";}//该条微博的转发数reposts_count[i] = statusesObj.getString("reposts_count");Log.i("reposts_count", reposts_count[i]);//该条微博的评论数comments_count[i] = statusesObj.getString("comments_count");Log.i("comments_count", comments_count[i]);//该条微博的点赞数attitudes_count[i] = statusesObj.getString("attitudes_count");Log.i("attitudes_count", attitudes_count[i]);//该条微博的微博text内容text[i] = statusesObj.getString("text");Log.i("text", text[i]);// 总的第三层//获取图片资源的地址 数组形式JSONArray imageArr = statusesObj.getJSONArray("pic_urls");// 循环地去获得多个图片地址// 获得数组的长度//为什么这里是0张?Log.i("图片有多少张", String.valueOf(imageArr.length()));for(int j=0;j<imageArr.length();j++){JSONObject imageObject = imageArr.getJSONObject(j);pic_urls[i][j]=imageObject.getString("thumbnail_pic");Log.i("thumbnail_pic",pic_urls[i][j]);}// 获取user的值String user = statusesObj.getString("user");//user转化为JSONObjectJSONObject userObj = new JSONObject(user); // 将其转化为JSONObject//微博主名screen_name[i] = userObj.getString("screen_name"); // 使用getXX方法获取数据Log.i("screen_name", screen_name[i]);//微博主照片的地址profile_image_url[i] = userObj.getString("profile_image_url"); // 使用getXX方法获取数据Log.i("profile_image_url", profile_image_url[i]);}// 若成功传入最后一个微博 指定一个变量 而不是只是一个数值 因为网络请求要花时间if(profile_image_url[COUNT-1]!=null){//若有值canIntent=true;// 非Activity中跳转 满足MVVM吗  不满足要改~~~~~~Intent intent = new Intent(mContext, MainActivity.class);mContext.startActivity(intent);}else{canIntent=false;}} catch(JSONException e){e.printStackTrace();}
}

二、通过JSONFormat解析
通过call<类A<类B>>形式

解析新浪微博JSON数据相关推荐

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

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

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

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

  3. python为什么closed_为什么Python无法解析此JSON数据? [关闭] - Why can't Python parse this JSON data? [closed]...

    问题: I have this JSON in a file: 我在文件中有此JSON: { "maps": [ { "id": "blabla&qu ...

  4. 组装复杂json请求数据和解析复杂json数据

    在项目中有很多的接口对接的问题,于是就遇到了客户提供的各种奇葩的请求体.说一下最近遇到的一个复杂的json格式请求数据如下: {"bizData": {"userList ...

  5. js解析\遍历json数据中所有的键和值

    js解析\遍历json数据中所有的键和值 for(var key in json){ console.log(key)    //键 consolelog(json[key])  //值 } 注:数组 ...

  6. Fastjson解析复杂json数据

    大体上分为三步,1.准备json数据.2,导入fastjson包.3,编写代码测试. 一.准备要解析的json数据:(够复杂了吧) {"code":200, "msg&q ...

  7. 在线解析xml,json数据的网址

    在线解析xml,json数据的网址 https://www.sojson.com/yasuoyihang.html

  8. Python中jmespath解析提取json数据

    在做接口自动化,测试断言时,我们经常需要提取接口的的响应数据字段,以前用过jsonpath,有几篇相关文章,可以参考下(Python深层解析json数据之JsonPath.[Jmeter篇]后置处理器 ...

  9. 解析新浪微博JSON

    之前发过一篇开发新浪微博的文章,对于大家比较感兴趣的内容之一便是如何解析新浪微博的JSON. 其实一开始的时候,也遇过一些挫折,比如直接用JsonArray和JsonObject去解析JSON内容的话 ...

最新文章

  1. 为了边缘计算,亚马逊、谷歌、微软已正面交锋!
  2. 【转】编程思想之消息机制
  3. 【错误记录】Android 分区存储下的 SD 卡应用专属外部存储空间目录访问 ( 需手动创建应用专属外部存储空间目录 )
  4. linux 信号传递函数,Linux Shell之七 函数应用
  5. word List36
  6. Linux Shell高级技巧(二)
  7. 【釜底抽薪】谷歌锁喉华为
  8. 6 9*9乘法口诀
  9. python写入txt,读取txt,拷贝txt文件
  10. 2021-2025年中国船用炉灶行业市场供需与战略研究报告
  11. android+去掉飞行模式,在Android中关闭飞行模式
  12. SpringSecurity初步理解
  13. 人文社科课题中计算机知识的作用,人文社科类项目申请书模板.doc
  14. java给链表赋值_java链表的各种操作
  15. 安卓手机屏幕分辨率如何修改
  16. [知识梳理]虚拟语气
  17. 服务器带宽占用检测,怎么看服务器的带宽
  18. 【分享】轻量级Linux + docker
  19. 干货|通过代理方式安装devstack
  20. 肌肉激活度(Muscle Activation)

热门文章

  1. JSON 解析,一款高颜值的 JSON 数据解析查看工具
  2. 解析JSON通用工具类
  3. 跨专业考博,可行吗?
  4. 【强推】掌握英语核心科技!!!
  5. 2-氟丙二酸二乙酯,cas685-88-1等含氟试剂,氟化试剂
  6. 从自然科学基金项目申请看科学问题的凝练 (陈越 等)
  7. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Neutron Open vSwitch + VLAN Virtual Network]
  8. python连接mysql数据库数据
  9. 注册验证之邮箱验证(SpringBoot框架)
  10. DX9与DX11shader编写中SV_POSITION与POSITION和SV_Target与COLOR之间的区别(二)