一起撸个朋友圈吧(step2) 数据结构(JSON结构)【上】篇

239 阅读3分钟

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

上篇链接:http://www.jianshu.com/p/68e13214cde4

下篇链接:http://www.jianshu.com/p/dc5782a494b5

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

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

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


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


结合百度百科信息和我们平时使用的印象,朋友圈目前有着以下几类的动态以及我们本次撸朋友圈要做的东西**(目前来说,因为没有后端支持,所以我们暂时在本地模拟各种操作【图片上传先不做,在这个项目中仅作展示用】,以后有机会再弄后续的)**: - 纯文字**【做他喵的】** + 纯文字动态应该是最为简单的,就是一段文字嘛←_←
  • 图文混编**【做他喵的】**
    • 不带文字的图文:
      • 单独一张图(x==1)【单张图片不固定大小,只有上限】
      • 大于一张图但小于等于三张图(x>1 && x<=3)【x张正方形imageview一字排开】
      • 四张图(x==4)【4张正方形imageview分两列呈“田字”】
      • 大于四张图但小于等于9张图(x>4 && x<=9)【x张正方形imageview结合gridview】
  • 带文字的图文:
    • 同上。。。
  • 小视频**【我认怂,本地没法模拟】**

    • 带文字
    • 不带文字
  • 网页链接**【无法实现真正的分享,因为没有服务器,点击直接跳原生webview,精力有限,不针对改造】**

    • 普通网页(有/无缩略图)
      • 带文字
      • 不带文字
  • 广告(官方推送的)【忽略】

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

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

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

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

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

  • 用户头像
  • 用户名字
  • 发布时间
  • 心情文字(没有文字的时候不展示,但每个动态都会预留这个控件位置)
  • 点赞展示(没有点赞的时候不展示,但每个动态都会预留这个控件位置)
  • 评论列表(没有评论的时候不展示,但每个动态都会预留这个控件位置)

而非共有属性其实只有一个:就是红框外的内容,这里的内容就是可变的,要么就是小视频,要么就是n张图(n<=9 && n>0),要么就是没有图(纯文字),要么就是网页链接或者音乐,广告我们忽略。。。

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

结构图2

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