流水不争先,争的是滔滔不绝

Android手把手朋友圈实战教程(四)数据结构(JSON结构)【上】篇

即时通讯软件开发 云聊IM 926℃

项目地址:https://github.com/razerdp/FriendCircle

首先,我们可以肯定的是,朋友圈拉取信息肯定是请求(废话)。

那么请求的数据格式普遍使用的就是xml或者JSON,虽然xml结构清晰有序,但JSON因为其方便,不需要前后端事先沟通好各种解析规则的原因,所以理论上来说一般请求都是使用JSON格式来传输数据的,况且xml解析要么标签索引要么节点遍历,无形中增加了许多压力而且更为复杂,所以选择JSON无可厚非。

那么开工之前我们先分析一下目前朋友圈拥有的类型,以及我们现在可以做的和不可以做的东西,然后初步确定一下JSON格式。然后在下篇我们将会按照这个格式进行JSON数据模拟。

开工之前,作为一枚“面向搜索引擎”编程的开发员,我们当然得谷歌一下。经过一轮谷歌后,我们顺利找到百度百科←_←(果然还是本土化重要啊)

结合百度百科信息和我们平时使用的印象,朋友圈目前有着以下几类的动态以及我们本次撸朋友圈要做的东西(目前来说,因为没有后端支持,所以我们暂时在本地模拟各种操作【图片上传先不做,在这个项目中仅作展示用】,以后有机会再弄后续的):

  1. 纯文字【做他喵的】
  2. 纯文字动态应该是最为简单的,就是一段文字嘛←_←
  3. 图文混编【做他喵的】
    1. 独一张图(x==1)【单张图片不固定大小,只有上限】
    2. 大于一张图但小于等于三张图(x>1 && x<=3)【x张正方形imageview一字排开】
    3. 四张图(x==4)【4张正方形imageview分两列呈“田字”】
    4. 大于四张图但小于等于9张图(x>4 && x<=9)【x张正方形imageview结合gridview】
  4. 带文字的图文:
    1. 同上。。。
  5. 小视频【我认怂,本地没法模拟】
    1. 带文字
    2. 不带文字
  6. 网页链接【无法实现真正的分享,因为没有服务器,点击直接跳原生webview,精力有限,不针对改造】
    1. 普通网页(有/无缩略图),带文字
    2. 普通网页(有/无缩略图),不带文字
  7. 广告(官方推送的)【忽略】

总结起来大概就是上面的五大类吧,除了广告和纯文字外,都有带文字和不带文字的区别。

分好类后,我们接下来看看这些数据共有的属性和非共有的属性,以便我们定义我们的JSON结构:

首先直接上一张图,来自百度:

这张图基本代表了朋友圈目前的主流:图文混编,那我们分析一下共有的数据:

共有属性

图中红框部分就是无论什么动态都会有的属性:

  1. 用户头像
  2. 用户名字
  3. 发布时间
  4. 心情文字(没有文字的时候不展示,但每个动态都会预留这个控件位置)
  5. 点赞展示(没有点赞的时候不展示,但每个动态都会预留这个控件位置)
  6. 评论列表(没有评论的时候不展示,但每个动态都会预留这个控件位置)
  7. 而非共有属性其实只有一个:就是红框外的内容,这里的内容就是可变的,要么就是小视频,要么就是n张图(n<=9 && n>0),要么就是没有图(纯文字),要么就是网页链接或者音乐,广告我们忽略。。。

初步确定后,我们的结构其实十分清晰了,具体可以参考一下这张思维导图:

(初步设计,可能会更改)

结构图2

下一篇,针对该结构图进行模拟JSON数据并优化。

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
点击这里给我发消息